Bonjour à tous,
Je voulais savoir si il était possible de detecter la presence d'un peripherique en VB ?
Merci a tous et bonne journée.
Zerrokooll.
Version imprimable
Bonjour à tous,
Je voulais savoir si il était possible de detecter la presence d'un peripherique en VB ?
Merci a tous et bonne journée.
Zerrokooll.
VB tout seul ??
Si tu nous disais le type de priphériques ? S'il ne s'agit que d'imprimantes, la chose devrait être facile (vois l'objet printer dans l'aide en ligne). S'il s'agit d'autres périphériques, c'est une autre affaire et VB ne saura pas le faire seul... :)
Bonjour,
En fait, je souhaiterais detecter le presence d'un modem usb et qu'en fonction de la presence ou non du modem, je puisse lancer un script.
Pour le lancement du script, pas de pb, la ou je peche, c'est la detection du modem !
Merci pour votre aide.
Z.
Tu peux le faire, mais en ouvrant en en lisant la base de registre depuis VB
La clef principale de la base devrait être :
HKEY_LOCAL_MACHINE\System\controlset001\control\class\ ici le CLSID correspondant
si tu veux plus d'informations sur le modem, il te faudra alors rechercher (toujours par lecture de la base de registre) ce que donne la clef de de clsid...
Bon courage à toi.
:)
Merci pour cette information.
Des que j'ai la soluce, je vous rappel...
Z.
Bonjour,
Je rescusite le post pour savoir si quelqu'un avait implementé ce type d 'appli , trouver une "solution" ??.
En effet cela peut etre interresant de pouvoir detecter les periheriques usb pluggés et de les identifier au cas .
voila.... i wait
tu as pourtant la réponse là :
http://www.developpez.net/forums/sho...04&postcount=4
Si maintenant tu ne sais pas ouvrir la base de registre par VB, tu as pour celà un sujet dans la FAQ. Il est à lire et à appliquer !
Citation:
Envoyé par jmfmarques
Desolé, mais je n'est pas trouvé ce code dans La FAQ. ou je suis borgne ???
http://vb.developpez.com/sources/?page=baseregistre#reg
Il est clair que si tu cherches la manipulation qui correspond exactement à ton cas, tu ne la trouveras pas (il ne peut y avoir un source pour chaque cas ...)
Ce lien t'apprend à manipuler (lecture, écriture, modification) la base de registre.
A toi de t'e'n servir comme tu l'entends, pour faire face à ton besoin.
parfait !
desolé je n'avait pas trouvé ce lien dans la FAQ officiel.
Bien sur, cet exemple est hautement readaptable et je vais m'y atteler.
Merci a toi !
Bonjour
Peut être le compsant "Microsoft SysInfo Control" (SYSINFO.OCX) pourrait faire l'affaire,
Event DeviceArrival et/ou Event DeviceOtherEvent
DeviceArrival, événement
Survient lorsqu'un nouveau périphérique est ajouté au système.
DeviceOtherEvent, événement
Événement de notification qui ne se mappe pas sur les événements généraux.
Salut
ProgElecT
Je suggère d'utiliser le controle MsComm, d'ouvrir chaque port existant sur la machine et d'interroger ce qu'il y a au bout. En effet, les modems même USB sont mappés sur un port COM accessible comme les ports physiques.
L'ouverture d'un port inexistant avec MsCOmm provoque un erreur récupérable, donc détectable. Si pas d'erreur, il suffit d'envoyer la commande Hayes ATI3 qui demande l'identification modem (il faut bien sur que ce dernier soit suffisamment récent pour répondre à cette commande - disons moins de 10 ans)
Cela donnerait donc l'algorithme suivant :
D'accord, cela risque d'être un peu long si le modem est sur le port 255... Mais ça fonctionne. Et comme j'aime bien apporter une preuve concrète de ce que j'avance, je viens de réaliser la petite appli suivante, ce qui m'a pris beaucoup moins de temps que de rédiger ce post.Code:
1
2
3
4
5
6
7
8
9
10 Pour n de 1 à 256 Tenter d'ouvrir COMn Si pas erreur Envoyer commande ATI3 et attendre Time-Out Si réponse alors nom modem dans réponse Si nom Ok sortir Fin Si Fin Si Suivant
Soit une form Form1 contenant :
- Un bouton CmdStart
- Un bouton cmdStop
- Un controle ListBox nommé List1
- Un contrôle MSComm nommé MSComm1
Dans le code de la feuille, collez ceci :
Maintenant cliquez sur le bouton Start : Le modem est trouvé (chez moi) en environ 2 secondes, les 256 ports sont scannés en moins de 3 secondes car les ports inexistants renvoient immédiatement une erreur et donc ne plombent pas le programme.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 Option Explicit Private Const mkdtTimeOut As Date = #12:00:01 AM# Private Const mksQuestionString$ = "ATI3" Private Const mksDetectString$ = "Creative Modem Blaster" Private mbRun As Boolean Private Sub cmdStart_Click() Dim n%, sRep$, dtStart As Date On Error Resume Next MSComm1.PortOpen = False mbRun = True List1.Clear For n = 1 To 256 If Not mbRun Then Exit Sub Err.Clear MSComm1.CommPort = n MSComm1.PortOpen = True If Err.Number = 0 Then MSComm1.Output = mksQuestionString & vbCrLf dtStart = Now() Do Until Now() > dtStart + mkdtTimeOut DoEvents If Not mbRun Then Exit Sub If MSComm1.InBufferCount > Len(mksDetectString) _ + Len(mksQuestionString) _ + Len(vbCrLf) Then Exit Do Loop sRep = MSComm1.Input 'Mise en forme de la réponse sRep = Replace(sRep, mksQuestionString, "") sRep = Replace(sRep, vbCr, " ") sRep = Replace(sRep, vbLf, " ") sRep = Replace(sRep, " ", " ") sRep = Trim(sRep) List1.AddItem "COM" & Format(n, "000") & " : " & sRep If InStr(sRep, mksDetectString) > 0 Then MsgBox "Trouvé en COM" & n, vbInformation End If Else List1.AddItem "COM" & Format(n, "000") & " : " & Err.Description End If MSComm1.PortOpen = False Next MsgBox "Pas trouvé.", vbExclamation End Sub Private Sub cmdStop_Click() mbRun = False End Sub
Si votre modem et paresseux, augmentez la constante mkdtTimeOut, qui est actuellement à 1 seconde.
Pensez surtout à changer la constante mksDetectString contenant le nom du modem. De toutes façon, sinon, le nom du modem apparaîtra quand même dans la liste, qu'il suffira de lire...
Les lignes vides de la liste correspondent à des ports existants et non ouverts, mais sans modem (réponse nulle sur time-out), ce qui ne veux pas dire qu'ils sont libres car il peut y avoir des équipements connectés qui ne répondent pas ou qui travaillent avec d'autres paramètres (vitesse, bits) que ceux paramétrés (ou tout simplement éteints). Ce problème ne se pose pas avec les modems qui sont auto-adaptatifs.