'*** v8.1 *** www.dieseyer.de **************************** ' ' Datei: usbporttest.vbs ' Autor: dieseyer@gmx.de ' Auf: www.dieseyer.de ' ' aus ' http://www.source-center.de/forum/showthread.php?t=37854 ' CMDR 080107 ' ' Gibt 'BESCHEID!', wenn sich an einem der USB-ports 'etwas' ' bewegt. ' ' Allgemeines Problem der Überwachung von Events: ' Das Skript 'steht' bei der Überwachung in der Do..Loop- ' Schleife, wodurch keine (anderen) Aktionen vom Skript ' ausgelöst oder ausgewertet werden können. Also lässt sich ' das Skript nur _nach_ einem Event beenden - wie hier mit ' " If Taste = vbNo then Exit Do" ' '********************************************************* Option Explicit '******** USB-Sentry.vbs CMDR 080108 ********* Dim objShell, objWMIService, colMonitoredProcesses Dim strLatestProcess, USBDev, Taste, mld set objShell = CreateObject( "WScript.Shell" ) objShell.PopUp "Die USB-Anschlüsse werden überwacht!", 5, "HINWEIS", vbSystemModal + vbInformation Set objWMIService = GetObject( "Winmgmts:{impersonationLevel=impersonate}" ) Set colMonitoredProcesses = objWMIService.ExecNotificationQuery ( "SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE TargetInstance ISA ""Win32_USBHub""" ) Do Set strLatestProcess = colMonitoredProcesses.NextEvent USBDev=strLatestProcess.TargetInstance.Name Select Case strLatestProcess.Path_.Class Case "__InstanceCreationEvent" mld = USBDev & vbLf & "wurde angeschlossen !" Case "__InstanceModificationEvent" mld = USBDev & vbLf & "wurde in der Einstellung geändert!" Case "__InstanceDeletionEvent" mld = USBDev & vbLf & "wurde abgezogen !" End Select ' Taste = objShell.PopUp ( mld & vbLf & vbLf & " --> Überwachung fortsetzen ?", 10, "MELDUNG", vbSystemModal + vbExclamation + vbYesNo ) Taste = objShell.PopUp ( strLatestProcess.Path_.Class & vbLf & vbLf & " --> Überwachung fortsetzen ?", 10, "MELDUNG", vbSystemModal + vbExclamation + vbYesNo ) If Taste = vbNo then Exit Do Loop objShell.PopUp "USB-Überwachung beendet!", 5, "ENDE", vbSystemModal