Exemple comme promis sur forum.
ComPorts.c est prêt à l'emploi.
Source / Exemple :
#define MEMDISPO (MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN)
#define QUATREKO 4096
/* RAPPEL USAGE DE: DWORD bnEnumPortsCom(char *pdata, DWORD lendata)
Remplit pdata en tableau de chaines ("COM1\0COM2\0"), 1 seul 0 final !!!
Retour DWORD dira combien de chaines.
Si lendata < 5 retournera 0 A TOUT COUP !!!
void __stdcall OnEnumComs(HWND hlst, int bAll)
{
char *pmem, *c;
DWORD r;
SendMessage(hlst, LB_RESETCONTENT, 0, 0);
pmem = (char*) VirtualAlloc(0, QUATREKO, MEMDISPO, PAGE_READWRITE);
if(!pmem) return;
if(bAll) r = bnEnumAllCom(pmem, QUATREKO);
else r = bnEnumPortsCom(pmem, QUATREKO);
if(!r) goto relMEM;
c = pmem;
do {
SendMessage(hlst, LB_ADDSTRING, 0, (long) c);
if(--r == 0) break; // ENUMERATION FINIE
while(*c) c++; // VA SUR ZERO FINAL DE FIN DE CHAINE
c++; // PASSE ZERO FINAL, VA SUR PROCHAINE CHAINE
} while(1);
relMEM: VirtualFree(pmem, 0, MEM_RELEASE);
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.