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. |