Page 1 sur 1

[Ex] Détection insertion périphérique USB

Posté : dim. 01 mars 2009 12:03
par Tlem
Voici un code qui permet de détecter l'insertion d'un périphérique USB et affiche dans la console du code la lettre d'unité qui lui est affectée.

Code : Tout sélectionner

; Code réalisé par ptrex le Mardi 13 2007.

$strComputer = "."
 $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")

 $colEvents = $objWMIService.ExecNotificationQuery _
    ("Select * From __InstanceOperationEvent Within 5 Where " _
        & "TargetInstance isa 'Win32_LogicalDisk'")

While 1
     $objEvent = $colEvents.NextEvent
    If $objEvent.TargetInstance.DriveType = 2 Then
        Select
            Case $objEvent.Path_.Class()="__InstanceCreationEvent"
                Consolewrite("Drive " & $objEvent.TargetInstance.DeviceId & "has been added." & @CR)
            Case $objEvent.Path_.Class()="__InstanceDeletionEvent"
                Consolewrite("Drive " & $objEvent.TargetInstance.DeviceId & "has been removed."& @CR)
        EndSelect
    EndIf
WEnd

Re: [Ex] Détection insertion périphérique USB

Posté : ven. 06 nov. 2009 09:40
par Julien
Bonjour,

ce script fonctionne assez bien (consomme un peu de mémoire, environ 5Mo) mais ne détecte que les média REMOVABLE, j'ai des disques USB reconnus comme FIXED, comment modifier ce script pour y inclure des périphérique reconnus ainsi et éventuellement en exclure du coup (c: par exemple) ?

D'avance merci.

Re: [Ex] Détection insertion périphérique USB

Posté : ven. 06 nov. 2009 11:08
par Tlem
Voici ce que dit Microsoft à propos de la propriété DriveType.
DriveType

Data type: uint32
Access type: Read-only

Numeric value that corresponds to the type of disk drive this logical disk represents.

Value / Meaning
0 / Unknown
1 / No Root Directory
2 / Removable Disk
3 / Local Disk
4 / Network Drive
5 / Compact Disc
6 / RAM Disk
Donc si dans le code vous rajoutez un contrôle sur les valeurs adéquates, cela devrait le faire. ;)
Modifiez cette ligne :

Code : Tout sélectionner

If $objEvent.TargetInstance.DriveType = 2 Then