Danke Dir, so sieht's nun aus:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
dbi: DEV_BROADCAST_DEVICEINTERFACE_W;
dbv: DEV_BROADCAST_VOLUME;
Size: Integer;
RDN: HDEVNOTIFY;
arr : array[0 .. 0] of word;
begin
arr[0] := 0;
Size := SizeOf(DEV_BROADCAST_DEVICEINTERFACE_W);
ZeroMemory(@dbi, Size);
dbi.dbcc_size := Size;
dbi.dbcc_devicetype := DBT_DEVTYP_DEVICEINTERFACE;
dbi.dbcc_reserved := 0;
dbi.dbcc_classguid := GUID_DEVINTERFACE_USB_DEVICE;
dbi.dbcc_name := arr;
RDN := RegisterDeviceNotificationW(Self.Handle, @dbi, DEVICE_NOTIFY_WINDOW_HANDLE);
if not Assigned(RDN) then
ShowMessage('1: ' + SysErrorMessage(GetLastError));
Size := SizeOf(DEV_BROADCAST_VOLUME);
ZeroMemory(@dbv, Size);
dbv.dbcv_size := Size;
dbv.dbcv_devicetype := DBT_DEVTYP_VOLUME;
dbv.dbcv_reserved := 0;
dbv.dbcv_flags := 0;
RDN := RegisterDeviceNotification(Self.Handle, @dbv, DEVICE_NOTIFY_WINDOW_HANDLE);
if not Assigned(RDN) then
ShowMessage('2: ' + SysErrorMessage(GetLastError));
OldWndProc := TMWndProc(Windows.GetWindowLong(Self.Handle, GWL_WNDPROC));
Windows.SetWindowLong(Self.Handle, GWL_WNDPROC, LongInt(@MyWndProc));
end;
Die Zeile
Zitat:
ShowMessage('2: ' + SysErrorMessage(GetLastError));
gibt nun folgendes aus:
Zitat:
Der Dienst hat einen dienstspezifischen Fehlercode zurückgegeben
Was heiß das eigentlich? Also ein Fehler ist es nicht, oder?