Bonjour,

Je travaille en Dev C et j'aimerais lister les valeurs des ports com dans le registre.
voici mon code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <io.h>
 
int main(int argc, char *argv[])
{
    HKEY Retour; 
    RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM",0,KEY_READ,&Retour); 
    //définition des variables local 
    unsigned long Ty=0,NNom=25,NVal=25; 
    char etat[25],Valeur[25],NomVal[25];
    int Ret,i=0;        
    void* hSer;                // création de l'objet com 
    //parcourt la partie concernee de la base de registre 
    do { 
        //ouverture d'une clé 
        Ret=RegEnumValue(Retour,i,NomVal,&NNom,0,&Ty,Valeur,&NVal); 
        //si pas d'erreur 
        if (Ret != ERROR_NO_MORE_ITEMS) { 
            printf("%s %s\n",Valeur,NomVal); // affichage
        } 
        i++; 
    } while (Ret != ERROR_NO_MORE_ITEMS); 
    //fermeture de la base de registre 
    RegCloseKey(Retour); 
}
On peut difficilement faire plus simple !

Ca marche bizzarement:
Ca liste bien mes deux ports physique mais pas mon virtuel (Périphérique usb qui simule port COM).
En fait j'ai ça:

COM1 \Device\Serial0
COM2 \Device\Serial (à la place de \Device\Serial1 mais c'est pas grave)
COM2 \Device\Serial (une deuxième fois)

Au lieu de:

COM1 \Device\Serial0
COM2 \Device\Serial
COM5 \Device\slabser0 (Qui est bien présent comme ça dans la base)

Ou me suis-je trompé ?


David, à VERSAILLES