Liste des Ports COM

apojd Messages postés 4 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 21 juin 2004 - 21 juin 2004 à 12:21
nah666 Messages postés 75 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 7 janvier 2008 - 25 mai 2005 à 08:31
Bonjour,

Je cherche la manière de connaître les ports com actif et leur description (comme sur le gestionnaire de péripheriques) sur le PC sous Windows.

Pour permettre le choix de portcomm existant

Merci

10 réponses

cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
21 juin 2004 à 13:13
avec le mscontrol, tu peux ouvrir toute une serie de port(mscomm1.portopen), si un port peut etre ouvert alors aucun message d'erreur, dans ce cas tu le fermes juste apres(+ procedure de listage), si il n'existe pas, il va t'envoyer un message d'erreur que tu peux gerer (code : 8002 "port non valide"). Pour avoir les informations, c'est un autre pb que je ne connais pas.
il doit y avoir d'autres moyens

bonne prog
liquide
0
apojd Messages postés 4 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 21 juin 2004
21 juin 2004 à 14:29
Merci Liquide

J'ai déjà implémenté cette technique qui marche bien, et je souhaitais que l'utilisateur selectionne le port est connecté mon boîtier grace à la description, sinon il doit aller dans les propriétés systèmes.
0
nah666 Messages postés 75 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 7 janvier 2008 1
21 déc. 2004 à 11:56
Euh c pas terrible les gars, de générer des erreurs pour les traiter ensuite..

La liste des port com reconnus doit se trouver dans la base de registre comme pour les imprimantes, par contre je sais pas ou dsl, je suis en train de chercher
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
21 déc. 2004 à 15:31
euhhhh , fait ta gestion de la base de registre, puis trouves les ports com en les listant et ensuite continue ton prog normalement.
elle n'est peut etre pas terrible mais elle est rapide et elle permet d'avoir la solution exacte avec un moindre code, ce qui l'est moins pour ta base de registre.

D'autant plus que l'erreur retournée est la pour la gestion, donc elle est permise, ce qui implique un code exact.

c'est juste mon avis.

Bonne prog, poele_a_frire@hotmail.com
liquide
0

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

Posez votre question
nah666 Messages postés 75 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 7 janvier 2008 1
21 déc. 2004 à 16:39
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM

le numéro 0 correspond au port com par defaut.

Cette methode est bien plus propre, selon moi toujours.
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
21 déc. 2004 à 18:42
bin donne tout le code pour recuperer tous les ports, comme ca, tout le monde en profite.

Bonne prog, poele_a_frire@hotmail.com
liquide
0
nah666 Messages postés 75 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 7 janvier 2008 1
22 déc. 2004 à 08:28
non, ta qu'a etre poli pour commencer..
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
22 déc. 2004 à 10:37
je vois ...... donneur de leçon mais pas donneur de code ....

Bonne prog, poele_a_frire@hotmail.com
liquide
0
mathew_bitshy Messages postés 11 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 11 juillet 2005
24 mai 2005 à 18:06
Salut,
Je suis d'accord, l'utilisation de la base de registre est top.
Se serai sympas d'avoir un exemple de code pour en avoir l'accès.
Merci d'avance.
Mathew--
0
nah666 Messages postés 75 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 7 janvier 2008 1
25 mai 2005 à 08:31
Jai trouvé ce fichier sur VBfrance, je ne sais plus qui est l'auteur dsl :



'debut reg.bas

Option Explicit

'// Register _

{

Private Declare Function RegOpenKey Lib "advapi32.dll" Alias
"RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult
As Long) As Long

Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String,
ByVal lpReserved As Long, lpType As Long, ByVal lpData As String,
lpcbData As Long) As Long

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Private Declare Function RegEnumValue Lib "advapi32.dll" Alias
"RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal
lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long,
lpType As Long, ByVal lpData As String, lpcbData As Long) As Long





'// Registry section definitions

Public Enum eHKey

HKEY_CLASSES_ROOT = &H80000000

HKEY_CURRENT_USER = &H80000001

HKEY_LOCAL_MACHINE = &H80000002

HKEY_USERS = &H80000003

HKEY_PERFORMANCE_DATA = &H80000004

HKEY_CURRENT_CONFIG = &H80000005

HKEY_DYN_DATA = &H80000006

End Enum



'// Registry value type definitions

Public Enum eRegMode

REG_NONE = 0 '// No value type

REG_SZ = 1 '// Unicode nul terminated string

REG_EXPAND_SZ = 2 '// Unicode nul terminated string

REG_BINARY = 3 '// Free form binary

REG_DWORD = 4 '// 32-bit number

REG_DWORD_LITTLE_ENDIAN = 4 '// 32-bit number (same as REG_DWORD)

REG_DWORD_BIG_ENDIAN = 5 '// 32-bit number

REG_LINK = 6 '// Symbolic Link (unicode)

REG_MULTI_SZ = 7 '// Multiple Unicode strings

REG_RESOURCE_LIST = 8 '// Resource list in the resource map

REG_FULL_RESOURCE_DESCRIPTOR = 9 '// Resource list in the hardware description

REG_RESOURCE_REQUIREMENTS_LIST = 10

End Enum



Public Type tValue

Name As String

Type As eRegMode

Value As Variant

End Type





'/////////////////////////////////////////////////////////////////////////////

'// Fonction pour lire toute les valeur contenu dans une clé avec leur type et leur noms _

{

Public Function ReadRegistryValues(ByVal hKey As eHKey, ByVal section As String, ByRef ValName() As tValue)

Dim KeyValue As Long

Dim RegMode As eRegMode

Dim lValueLength As Long

Dim lValueNameLength As Long

Dim sValueName As String

Dim sValue As String

Dim Idx As Long

Call RegOpenKey(hKey, section, KeyValue) '// Ouverture

Do '// Début de la boucle principale

sValue = Space$(2048)

sValueName = Space$(2048)

lValueLength = Len(sValue)

lValueNameLength = Len(sValueName)

If (RegEnumValue(KeyValue, Idx,
sValueName, lValueNameLength, 0&, RegMode, sValue, lValueLength) 0) And (Err.Number 0) Then '// Si on trouve une valeur ...

sValueName = Left$(sValueName, lValueNameLength) '// On en extrait le nom

sValue = ReadRegistry(hKey, section, sValueName) '// et la valeur

ReDim Preserve ValName(Idx) As tValue '// Redimmentionne le tableau

ValName(Idx).Name = sValueName '// Nom de la valeur

ValName(Idx).Type = RegMode '// Le type

ValName(Idx).Value = sValue '// La valeur

Else '// Si on trouve pas de valeur, c que c la fin

Exit Do '// On quitte la boucle

End If

Idx = Idx + 1 '// Incrément de l'index de valeur

Loop

Call RegCloseKey(KeyValue) '// Fermeture

End Function ' _

}









'/////////////////////////////////////////////////////////////////////////////

'// Fonction pour lire une donnée du registre _

{

Private Function ReadRegistry(ByVal hKey As eHKey, ByVal section As String, ByVal key As String) As String

Dim KeyValue As Long

Dim RegMode As eRegMode

On Error Resume Next

Call RegOpenKey(hKey, section, KeyValue) '// Ouverture

ReadRegistry = Space$(2048)

Call RegQueryValueEx(KeyValue, key, 0&, RegMode, ReadRegistry, Len(ReadRegistry))

If Err.Number = 0 Then

If RegMode = REG_DWORD Then '// Si c'est une valeur DWORD

ReadRegistry =
Format$(Asc(Mid$(ReadRegistry, 1, 1)) + &H100& *
Asc(Mid$(ReadRegistry, 2, 1)) + &H10000 * Asc(Mid$(ReadRegistry, 3,
1)) + &H1000000 * CDbl(Asc(Mid$(ReadRegistry, 4, 1))), "000") '//
On converti le format en décimal

ElseIf RegMode = REG_BINARY Then '// Si cest une valeur BINARY

ReadRegistry = Left$(ReadRegistry, Len(ReadRegistry)) '// On lit la valeur

Else '// Sinon

ReadRegistry =
Left$(ReadRegistry, InStr(ReadRegistry, Chr(0)) - 1) '// lit avant le 0

End If

End If

Call RegCloseKey(KeyValue) '// Fermeture

End Function ' _

}

'fin reg.bas



ensuite pour récuperer ton info tu utilise l'appel :



Dim TabKey() As tValue

' base de registre

ReadRegistryValues HKEY_LOCAL_MACHINE, "HARDWARE\DEVICEMAP\SERIALCOMM", TabKey





tiens moi au courant, bonne prog
0