titim77
Messages postés22Date d'inscriptionmercredi 4 octobre 2000StatutMembreDernière intervention31 janvier 2011
-
22 mars 2005 à 16:30
jbphp
Messages postés61Date d'inscriptionjeudi 23 août 2007StatutMembreDernière intervention14 février 2009
-
4 mars 2008 à 13:20
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
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 22 mars 2005 à 22:01
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
...........
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 23 mars 2005 à 17:12
Et juste comme ça ...
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)
jbphp
Messages postés61Date d'inscriptionjeudi 23 août 2007StatutMembreDernière intervention14 février 2009 4 mars 2008 à 13:20
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!!!!!!!!!