(Gast)
n/a Beiträge
|
AW: SHChangeNotifyRegister Event
11. Mai 2017, 18:45
Ich habe das jetzt mal getestet.
Habe da jedoch noch eine Frage.
Was gibt dir LP aus wenn du eine Datei löschen tust und sie wieder herstellst ?
Das wäre sehr wichtig zu wissen.
Kann es sein das dort gar nichts sinnvolles bei rum kommt?
Denn bei mir ist es immer SHCNE_RENAMEITEM! was hat das mit dem löschen von Dateien zu tun?
Delphi-Quellcode:
Type
ShellStatus =(
SHCNE_RENAMEITEM,
SHCNE_CREATE,
SHCNE_DELETE,
SHCNE_MKDIR,
SHCNE_RMDIR,
SHCNE_MEDIAINSERTED,
SHCNE_MEDIAREMOVED,
SHCNE_DRIVEREMOVED,
SHCNE_DRIVEADD,
SHCNE_NETSHARE,
SHCNE_NETUNSHARE,
SHCNE_ATTRIBUTES,
SHCNE_UPDATEDIR,
SHCNE_UPDATEITEM,
SHCNE_SERVERDISCONNECT,
SHCNE_UPDATEIMAGE,
SHCNE_DRIVEADDGUI,
SHCNE_RENAMEFOLDER,
SHCNE_FREESPACE
);
TShellStatus = ShellStatus;
Delphi-Quellcode:
const
cShellStatus : Array[TShellStatus] of String =(
'SHCNE_RENAMEITEM', // 0x00000001L
'SHCNE_CREATE', // 0x00000002L
'SHCNE_DELETE', // 0x00000004L
'SHCNE_MKDIR', // 0x00000008L
'SHCNE_RMDIR', // 0x00000010L
'SHCNE_MEDIAINSERTED', // 0x00000020L
'SHCNE_MEDIAREMOVED', // 0x00000040L
'SHCNE_DRIVEREMOVED', // 0x00000080L
'SHCNE_DRIVEADD', // 0x00000100L
'SHCNE_NETSHARE', // 0x00000200L
'SHCNE_NETUNSHARE', // 0x00000400L
'SHCNE_ATTRIBUTES', // 0x00000800L
'SHCNE_UPDATEDIR', // 0x00001000L
'SHCNE_UPDATEITEM', // 0x00002000L
'SHCNE_SERVERDISCONNECT', // 0x00004000L
'SHCNE_UPDATEIMAGE', // 0x00008000L
'SHCNE_DRIVEADDGUI', // 0x00010000L
'SHCNE_RENAMEFOLDER', // 0x00020000L
'SHCNE_FREESPACE' // 0x00040000L
);
Delphi-Quellcode:
procedure RegisterRecyleBin(WinHandle: HWND);
var
hNotifyRBin: ULONG;
pidlRecycleBin: PItemIDList;
stPIDL: TSHChangeNotifyEntry;
hr: HRESULT;
begin
hr := SHGetSpecialFolderLocation(WinHandle, CSIDL_BITBUCKET, pidlRecycleBin);
if Succeeded(hr) then
begin
stPIDL.pidl := pidlRecycleBin;
stPIDL.fRecursive := True;
hNotifyRBin := SHChangeNotifyRegister(WinHandle, SHCNF_ACCEPT_INTERRUPTS or
SHCNF_ACCEPT_NON_INTERRUPTS, SHCNE_ALLEVENTS, WM_SHELLNOTIFY, 1, stPIDL);
if 0 = hNotifyRBin then
RaiseLastOSError(GetLastError);
end
else
RaiseLastOSError;
end;
Delphi-Quellcode:
var
Status : ShellStatus;
Delphi-Quellcode:
WM_SHELLNOTIFY:
begin
Status := ShellStatus(lP);
ShowMessage(cShellStatus[Status]);
end;
gruss
Geändert von EWeiss (11. Mai 2017 um 20:10 Uhr)
|