Sysinfo

titim77 Messages postés 22 Date d'inscription mercredi 4 octobre 2000 Statut Membre Dernière intervention 31 janvier 2011 - 22 mars 2005 à 16:30
jbphp Messages postés 61 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 14 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

11 réponses

rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
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
...........

a+
ryl...
0
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
22 mars 2005 à 22:08
Euh... pardon !
C'est plutot : " If devType <> 2 Then Exit Sub "
voili...
ryl...
0
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
23 mars 2005 à 01:02
Re euh...
juste au dessus de : Debug.Print "DeviceArrival" ajoute "If DeviceType <> 2 Then Exit Sub"...

...........

Private Sub SysInfo1_DeviceArrival(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)

If DeviceType <> 2 Then Exit Sub ' <= Pour ne traiter que les peripheriques de stockage !!
' <= (LogicalUnit)

Debug.Print "DeviceArrival"
Debug.Print "devicetype " & DeviceType
...........

ryl...
0
titim77 Messages postés 22 Date d'inscription mercredi 4 octobre 2000 Statut Membre Dernière intervention 31 janvier 2011
23 mars 2005 à 09:00
merci pour ta reponse mais voici ce que j'ai

devicetype = 2
devicedata = 1
deviceid = -2147483632

donc je n'arrive pas a determiner la lettre du lecteur
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
23 mars 2005 à 13:35
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

Debug.Print "DeviceArrival"
Debug.Print "devicetype " & DeviceType
Debug.Print "DeviceID " & Chr(Log(DeviceID) / Log(2) + 65) ' Lettre lecteur (+ simple)!!
Debug.Print "DeviceName " & DeviceName
Debug.Print "DeviceData " & DeviceData
End Sub

Y a t-il un changement u pas ?
Quel OS utilise tu ?

a+
ryl...
0
titim77 Messages postés 22 Date d'inscription mercredi 4 octobre 2000 Statut Membre Dernière intervention 31 janvier 2011
23 mars 2005 à 16:08
non toujours pas , j'ai win 2000 comme os
j'ai une erreur car le deviceid est negatif
0
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
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)

Debug.Print "DeviceArrival"
Debug.Print "devicetype " & DeviceType
Debug.Print "DeviceID " & Chr(Log(DeviceID) / Log(2) + 65) ' Lettre lecteur (+ simple)!!
Debug.Print "DeviceName " & DeviceName
Debug.Print "DeviceData " & DeviceData
End Sub

a+
ryl...
0
titim77 Messages postés 22 Date d'inscription mercredi 4 octobre 2000 Statut Membre Dernière intervention 31 janvier 2011
24 mars 2005 à 09:08
le probleme est que je veux traiter l'insertion d'un cdrom donc si je fais ca mon pgn ne fonctionnera jamais puisque le deviceid est negatif
0
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
28 mars 2005 à 04:38
Peut etre que dans ton cas: ( -2147483632 ) = ( E: ) non ?
As tu le meme résultat avec un lecteur CD/DVDROM different ?
a+
ryl...
0
titim77 Messages postés 22 Date d'inscription mercredi 4 octobre 2000 Statut Membre Dernière intervention 31 janvier 2011
29 mars 2005 à 11:24
tout a fait , c'est mon lecteur e:

je vais essaye ailleurs pour voir si ca me fait la meme chose

merci

thierry
0
jbphp Messages postés 61 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 14 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!!!!!!!!!

JB
0
Rejoignez-nous