bonjour ,
je voudrais creer un pgm qui se declenche a l'insertion d'un cdrom ou dvd
j'ai trouve une source qui utilise l'ocx sysinfo evennement devicearrival
mon souci est que en deviceid il me donne -2147483632 et donc avec la fonction
getlettre(deviceid) impossible de trouver la lettre du lecteur ou j'ai insere un cdrom
voir exemple ci dessous
Private Sub SysInfo1_DeviceArrival(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
Debug.Print "DeviceArrival"
Debug.Print "devicetype " & DeviceType
Debug.Print "DeviceID " & GetDrive(DeviceType, DeviceID)
Debug.Print "DeviceName " & DeviceName
Debug.Print "DeviceData " & DeviceData
End Sub
Private Function GetDrive(devType As Long, devID As Long) As String
Select Case devType
Case 0 To 1 ' returns null
GetDrive = devID
Exit Function
Case 3 To 4 ' returns null
GetDrive = devID
Exit Function
Case 2 ' logical drive.
' Create an array for the possible drive numbers returned by
' deviceID
Dim drives(25) ' A-Z
Dim dvNum As Long ' Possible bit values.
Dim i As Integer
dvNum = 1
drives(0) = 1
' Populate with bit values.
For i = 1 To 25
dvNum = dvNum * 2
drives(i) = dvNum
Next i
For i = 0 To 25
If drives(i) = devID Then
GetDrive = "Drive: " & Chr(i + 65)
Exit Function
End If
Next I
Case Else ' Other unexpected returns
Debug.Print devType, devID
End Select
End Function
donc si quelqu'un a une solution a mon prob merci d'avance
Thierry
Bonjour titim77 ,
J'ai eu ce pb sous Me/98 uniquement pas sous XP...
juste au dessus de "Select Case devType" ajoute "If DeviceType <> 2 Then Exit Sub"...
...........
Private Function GetDrive(devType As Long, devID As Long) As String
If DeviceType <> 2 Then Exit Sub ' <= Pour ne traiter que les peripheriques de stockage !!
' <= (LogicalUnit)
Select Case devType
Case 0 To 1 ' returns null
...........
Private Sub SysInfo1_DeviceArrival(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
If DeviceID < 0 Then Exit Sub ' Si resultat negatif pas de traitement
If DeviceType <> 2 Then Exit Sub ' <= Pour ne traiter que les peripheriques de stockage !!
' <= (LogicalUnit)
C'est simple, ya une source sur vbfrance.com qui permet de déclencher une action qd un usb stockage arrive, tu peux faire la meme chose avec un cd en remplacent devicearival par un autre evenement, sous visual studio il sont tous décrit!!!!!!!!!