Subversion Repositories delphiutils

Rev

Rev 6 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6 Rev 7
Line 2126... Line 2126...
2126
  if (RBHandle <> 0) and (Assigned(PSHGetSettings)) then
2126
  if (RBHandle <> 0) and (Assigned(PSHGetSettings)) then
2127
  begin
2127
  begin
2128
    ZeroMemory(@lpss, SizeOf(lpss));
2128
    ZeroMemory(@lpss, SizeOf(lpss));
2129
    PSHGetSettings(lpss, SSF_NOCONFIRMRECYCLE);
2129
    PSHGetSettings(lpss, SSF_NOCONFIRMRECYCLE);
2130
    // bNoConfirmRecycle := (lpss.Flags1 and 4) = 4; // fNoConfirmRecycle
2130
    // bNoConfirmRecycle := (lpss.Flags1 and 4) = 4; // fNoConfirmRecycle
2131
    bNoConfirmRecycle := GetByteBit(lpss.Flags1, 3);
2131
    bNoConfirmRecycle := GetByteBit(lpss.Flags1, 2);
2132
 
2132
 
2133
    result := not bNoConfirmRecycle;
2133
    result := not bNoConfirmRecycle;
2134
  end
2134
  end
2135
  else
2135
  else
2136
  begin
2136
  begin
Line 2149... Line 2149...
2149
        ZeroMemory(@rbuf, SizeOf(rbuf));
2149
        ZeroMemory(@rbuf, SizeOf(rbuf));
2150
        reg.ReadBinaryData('ShellState', rbuf, SizeOf(rbuf));
2150
        reg.ReadBinaryData('ShellState', rbuf, SizeOf(rbuf));
2151
 
2151
 
2152
        // Lese 3tes Bit vom 5ten Byte
2152
        // Lese 3tes Bit vom 5ten Byte
2153
        // bNoConfirmRecycle := ((rbuf[4] and 4) = 4);
2153
        // bNoConfirmRecycle := ((rbuf[4] and 4) = 4);
2154
        bNoConfirmRecycle := GetByteBit(ord(rbuf[4]), 3);
2154
        bNoConfirmRecycle := GetByteBit(ord(rbuf[4]), 2);
2155
        result := not bNoConfirmRecycle;
2155
        result := not bNoConfirmRecycle;
2156
 
2156
 
2157
        reg.CloseKey;
2157
        reg.CloseKey;
2158
      end
2158
      end
2159
      else
2159
      else
Line 2179... Line 2179...
2179
  PSHGetSetSettings: TSHGetSetSettings;
2179
  PSHGetSetSettings: TSHGetSetSettings;
2180
  RBHandle: THandle;
2180
  RBHandle: THandle;
2181
 
2181
 
2182
  reg: TRegistry;
2182
  reg: TRegistry;
2183
  rbuf: array[0..255] of byte;
2183
  rbuf: array[0..255] of byte;
-
 
2184
 
-
 
2185
  dwResult: DWORD;
2184
begin
2186
begin
2185
  PSHGetSetSettings := nil;
2187
  PSHGetSetSettings := nil;
2186
 
2188
 
2187
  RBHandle := LoadLibrary(shell32);
2189
  RBHandle := LoadLibrary(shell32);
2188
  if(RBHandle <> 0) then
2190
  if(RBHandle <> 0) then
Line 2197... Line 2199...
2197
 
2199
 
2198
  if (RBHandle <> 0) and (Assigned(PSHGetSetSettings)) then
2200
  if (RBHandle <> 0) and (Assigned(PSHGetSetSettings)) then
2199
  begin
2201
  begin
2200
    ZeroMemory(@lpss, SizeOf(lpss));
2202
    ZeroMemory(@lpss, SizeOf(lpss));
2201
    PSHGetSetSettings(lpss, SSF_NOCONFIRMRECYCLE, false); // Get
2203
    PSHGetSetSettings(lpss, SSF_NOCONFIRMRECYCLE, false); // Get
2202
    lpss.Flags1 := SetByteBit(lpss.Flags1, 3, NewSetting);
2204
    lpss.Flags1 := SetByteBit(lpss.Flags1, 2, NewSetting);
2203
    PSHGetSetSettings(lpss, SSF_NOCONFIRMRECYCLE, true); // Set
2205
    PSHGetSetSettings(lpss, SSF_NOCONFIRMRECYCLE, true); // Set
2204
 
2206
 
2205
    // TODO: Do we need a WM_SETTINGCHANGE message to send?
2207
    // TODO: Do we need a WM_SETTINGCHANGE message to send?
-
 
2208
    SendMessageTimeout (
-
 
2209
      HWND_BROADCAST, WM_SETTINGCHANGE,
-
 
2210
      0, lParam (pChar ('Environment')),
-
 
2211
      SMTO_ABORTIFHUNG, 5000, dwResult
-
 
2212
    );
2206
  end
2213
  end
2207
  else
2214
  else
2208
  begin
2215
  begin
2209
    reg := TRegistry.Create;
2216
    reg := TRegistry.Create;
2210
    try
2217
    try
Line 2218... Line 2225...
2218
      reg.RootKey := HKEY_CURRENT_USER;
2225
      reg.RootKey := HKEY_CURRENT_USER;
2219
      if (reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer', false)) then
2226
      if (reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer', false)) then
2220
      begin
2227
      begin
2221
        ZeroMemory(@rbuf, SizeOf(rbuf));
2228
        ZeroMemory(@rbuf, SizeOf(rbuf));
2222
        reg.ReadBinaryData('ShellState', rbuf, SizeOf(rbuf)); // Get
2229
        reg.ReadBinaryData('ShellState', rbuf, SizeOf(rbuf)); // Get
2223
        rbuf[4] := SetByteBit(rbuf[4], 3, NewSetting);
2230
        rbuf[4] := SetByteBit(rbuf[4], 2, NewSetting);
2224
        reg.WriteBinaryData('ShellState', rbuf, SizeOf(rbuf)); // Set
2231
        reg.WriteBinaryData('ShellState', rbuf, SizeOf(rbuf)); // Set
2225
 
2232
 
2226
        // TODO: Check if that's OK...
2233
        // TODO: Check if that's OK...
-
 
2234
        SendMessageTimeout (
2227
        Sendmessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,LParam(PChar('Environment')));
2235
          HWND_BROADCAST, WM_SETTINGCHANGE,
-
 
2236
          0, lParam (pChar ('Environment')),
-
 
2237
          SMTO_ABORTIFHUNG, 5000, dwResult
-
 
2238
        );
2228
 
2239
 
2229
        reg.CloseKey;
2240
        reg.CloseKey;
2230
      end
2241
      end
2231
      else
2242
      else
2232
      begin
2243
      begin
Line 2857... Line 2868...
2857
  result := RBHandle <> 0;
2868
  result := RBHandle <> 0;
2858
end;
2869
end;
2859
 
2870
 
2860
function RecyclerLibraryVersion: string;
2871
function RecyclerLibraryVersion: string;
2861
begin
2872
begin
2862
  result := 'ViaThinkSoft Recycle Bin Unit [14 JUN 2010]';
2873
  result := 'ViaThinkSoft Recycle Bin Unit [16 JUN 2010]';
2863
end;
2874
end;
2864
 
2875
 
2865
end.
2876
end.