Trouver l'asdresse de (des) ports parallele

chicochiri Messages postés 66 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 29 décembre 2018 - 23 août 2005 à 12:30
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 23 août 2005 à 18:41
Bonjour,

je voudrai recuperer l'asdresse avec une api ou autre du ou des ports parralele installés dans l'ordi car g une appli avec une certe electronique qui fonctionne sur le port parralele

merci :-))

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 août 2005 à 18:41
Salut
Ca m'amusait de remettre le nez dans les objets WMI :
Je te conseille vivement d'aller regarder cette source (clique ici) qui te permettra de rentrer dans les entrailles de ta machine (facile à mettre en oeuvre, suffit de remplacer 'WScript.Echo' par 'Debug.Print' et de coller le code dans le Form_Load d'un nouveau projet).

Voici donc un code (à appronfondir) pour tes adresses de ports parallèle :
Ceci dans la partie 'Déclarations' :
Private Type PortsType
Port As String
PnPID As String
Adresse1 As String
Adresse2 As String
End Type

et celle-là, dans ton Form_Load par exemple :
Dim mPorts(10) As PortsType ' Les données
Dim sComputerName, WMI_Obj, WMI_ObjProps, ObjClsItem
Dim r As Long, Temp As String


On Error Resume Next
' sComputerName peut être un PC distant If Len(Trim(sComputerName)) 0 Then sComputerName "."

'------ Récupère la liste des ports parallèles
'Information for Win32_ParallelPort
Set WMI_Obj = GetObject("winmgmts:\" & sComputerName & "\root\cimv2")
Set WMI_ObjProps = WMI_Obj.ExecQuery("Select * From Win32_ParallelPort", , 48)


r = 0
For Each ObjClsItem In WMI_ObjProps
mPorts(r).Port = ObjClsItem.Caption ' LPT1
mPorts(r).PnPID = ObjClsItem.PNPDeviceID ' ACPI\PNP0401\4&17E9AA14&0
r = r + 1
Next
Set WMI_ObjProps = Nothing

'------ Récupère les adresses
'Information for Win32_PNPAllocatedResource
Set WMI_ObjProps = WMI_Obj.ExecQuery("Select * From Win32_PNPAllocatedResource", , 48)
For Each ObjClsItem In WMI_ObjProps
For r = 0 To 10
If mPorts(r).Port = "" Then Exit For
Temp = ObjClsItem.Dependent ' Syntaxe SQL : \ est remplacé par \\
Temp = Replace(Temp, "\", "") ' Donc, on fait l'inverse
If Temp Like "*" & mPorts(r).PnPID & "*" Then
Temp = ObjClsItem.Antecedent ' Syntaxe SQL : \ est remplacé par \\
If Temp Like "*StartingAddress*" Then
Temp = Split(Temp, "=")(1) ' ne garde que ce qu'il y a après le =
Temp = Replace(Temp, """", "") ' Supprime les "
If mPorts(r).Adresse1 = "" Then
mPorts(r).Adresse1 = Temp
Else
mPorts(r).Adresse2 = Temp
End If
End If
End If
Next r
Next


'------ Affichage résultat
Debug.Print "--------------------------------------------"
For r = 0 To 10
If mPorts(r).Port = "" Then Exit For
Debug.Print " Port : " & mPorts(r).Port
Debug.Print " ID : "; mPorts(r).PnPID
Debug.Print "Adresse 1 décimale : " & mPorts(r).Adresse1, " (Hexa : "; Hex(Val(mPorts(r).Adresse1)) & ")"
Debug.Print "Adresse 2 décimale : " & mPorts(r).Adresse2, " (Hexa : "; Hex(Val(mPorts(r).Adresse2)) & ")"
Debug.Print "--------------------------------------------"
Next r


Set WMI_ObjProps = Nothing
Set WMI_Obj = Nothing

Les résultats s'afficheront dans la fenêtre de debug (Ctrl-G)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
Rejoignez-nous