GetComputerNameEx

Résolu
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 26 août 2006 à 12:00
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 26 août 2006 à 14:23
Bonjour à tous,

Voila je tente d'utiliser la fonction GetComputerNameEx() , mais voila , j'ai une erreur de "linkage" il dit en gros que la fonction est inconnue. Je me suis dit bon, c'est p-e le compilo je vais esseye un autre ( en l'occurence GCC sous codes::block), mm chose ... .Donc ce n'est pas un inccident isolé :p . Voila mon code , je ne voi absolument pas ce qui est mal fait :

#define _WIN32_WINNT 0x0500 // pour le ifdef dans winbase.h

[...]

char szBuffer[120];
DWORD dwSize = 120;

GetComputerNameEx((COMPUTER_NAME_FORMAT)2,szBuffer,&dwSize);
SendMessage(hwnd,szBuffer,"result :",MB_OK);

[...]

Merci d'avance.

8 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
26 août 2006 à 12:36
Avec VC++ pas de problème. En fait c'est MinGW qui merde
Ils ont oublié de redéfinir GetComputerNameEx en GetComputerNameExA ou GetComputerNameExW (comme on le fait pour toutes les API).
Donc remplace ton GetComputerNameEx par GetComputerNameExA ou GetComputerNameExW si ton projet est en Unicode

_____________________________________
Un éditeur de ressources gratuit pour Windows
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
26 août 2006 à 12:59
#ifdef UNICODE
#define GetComputerNameEx  GetComputerNameExW
#else
#define GetComputerNameEx  GetComputerNameExA
#endif // !UNICODE

Voila les lignes qu'ils ont oublié de mettre, tu peux les ajouter dans ton winbase.h (pas terrible) ou dans un fichier de ton projet

_____________________________________
Un éditeur de ressources gratuit pour Windows
3
AndreJAO Messages postés 24 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 2 septembre 2007
26 août 2006 à 12:47
if(!GetComputerName(szBuffer,&dwSize))
NULL;//traitement d'erreur à prévoir
else
SendMessage(hwnd,szBuffer,"result :",MB_OK);
Voila qui ne devrait pas poser problème
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 août 2006 à 12:55
Merci vecchio , cela fonctionne. Je ne sais pas , je demande, n'y a-t-il pas moyen de corriger cette erreur et de redéfinier GetComputerNameEx ?
0

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

Posez votre question
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 août 2006 à 13:19
Aussi simple que ça ? Je croyai que ce genre de chose était hors de ma portée lol. Merci vecchio :D
0
AndreJAO Messages postés 24 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 2 septembre 2007
26 août 2006 à 13:20
Je suis curieux mais pourquoi GetComputerNameEx alors que GetComputerName répond au pb et ne pose pas de problème de dépendance ?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
26 août 2006 à 13:23
To retrieve the DNS host name, DNS domain name, or the fully qualified DNS name,
call the [getcomputernameex.htm GetComputerNameEx] function

Les fonctions Ex offrent plus d'options que leurs version équivalentes non Ex
GetComputerNameEx ne pose pas de problème de dépendance, c'est juste le header winbase.h de MinGW qui n'est pas complet

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 août 2006 à 14:23
C'est simple GetComputerName , ne renvoie que le nom netbios de la machine contrairement à GetComputerNameEx qui lui renvoie le nom netbios, le nom du pc ds le domaine ,...

Regarde ici :

msdn
0