Probiers mal mit WM_DEVICECHANGE. Dann über den Devicenamen prüfen, ob die Änderung relevant ist (auch USB beachten!)
Code:
if DeviceName.StartsWith('\\?\HID#') then
begin
// Ein HID-Gerät wurde ein-/ausgehängt, das kann ein Digitizer sein:
// Flag setzen, sodass wir via Timer die Geräte neu einlesen können.
_ProcessDeviceChange(paASHIDDeviceChanged);
end else
if DeviceName.StartsWith('\\?\USB#') then
begin
// Ein USB-Gerät wurde ein-/ausgehängt: Flag setzen, sodass wir OnIdle die Geräte neu einlesen können.
_ProcessDeviceChange(paASUsbDeviceChanged);
end
else if DeviceName.StartsWith('\\?\SWD#PRINTENUM') then
begin
// Ein Drucker wurde neu eingerichtet oder gelöscht: Druckerliste aktualisieren.
_ProcessDeviceChange(paASPrinterDeviceChanged);
end;