[Qt] Du code de MSDN compilé avec Qt Creator ne s'exécute pas bien
5 réponses
orax
Bonjour, j'essaie de compiler avec Qt Creator le code provenant de ce
site : http://msdn.microsoft.com/en-us/library/ms686701(VS.85).aspx mais
sans succès. Ca marche pourtant très bien avec Dev-C++ ou Visual C++ 6.
J'ai tout de même pu le compiler en le simplifiant beaucoup.
J'ai Qt Creator 1.2.1 avec Qt 4.5.2.
Voilà ci-dessous le code que j'ai à l'heure actuelle. Il s'exécute bien
quand il est compilé avec DevC++ ou VC++ 6, mais quand il est compilé
avec Qt Creator, le _tprintf() me renvoie, par exemple, "PROCESS NAME:
P", (juste une lettre, au lieu de me renvoyer le nom complet du processus).
// Take a snapshot of all processes in the system.
hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( hProcessSnap == INVALID_HANDLE_VALUE )
{
return( FALSE );
}
// Set the size of the structure before using it.
pe32.dwSize = sizeof( PROCESSENTRY32 );
// Retrieve information about the first process,
// and exit if unsuccessful
if( !Process32First( hProcessSnap, &pe32 ) )
{
CloseHandle( hProcessSnap ); // clean the snapshot object
return( FALSE );
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Loïc
"orax" a écrit dans le message de news: 4ad4d540$0$960$
Bonjour, j'essaie de compiler avec Qt Creator le code provenant de ce site : http://msdn.microsoft.com/en-us/library/ms686701(VS.85).aspx mais sans succès. Ca marche pourtant très bien avec Dev-C++ ou Visual C++ 6. J'ai tout de même pu le compiler en le simplifiant beaucoup. J'ai Qt Creator 1.2.1 avec Qt 4.5.2.
Voilà ci-dessous le code que j'ai à l'heure actuelle. Il s'exécute bien quand il est compilé avec DevC++ ou VC++ 6, mais quand il est compilé avec Qt Creator, le _tprintf() me renvoie, par exemple, "PROCESS NAME: P", (juste une lettre, au lieu de me renvoyer le nom complet du processus).
C'est forcément un problème Unicode <=> Ansi Vérifie les propriéts du projet (comme "character set" pour VS)
"orax" <a@a.a> a écrit dans le message de news:
4ad4d540$0$960$ba4acef3@news.orange.fr...
Bonjour, j'essaie de compiler avec Qt Creator le code provenant de ce site
: http://msdn.microsoft.com/en-us/library/ms686701(VS.85).aspx mais sans
succès. Ca marche pourtant très bien avec Dev-C++ ou Visual C++ 6.
J'ai tout de même pu le compiler en le simplifiant beaucoup.
J'ai Qt Creator 1.2.1 avec Qt 4.5.2.
Voilà ci-dessous le code que j'ai à l'heure actuelle. Il s'exécute bien
quand il est compilé avec DevC++ ou VC++ 6, mais quand il est compilé avec
Qt Creator, le _tprintf() me renvoie, par exemple, "PROCESS NAME: P",
(juste une lettre, au lieu de me renvoyer le nom complet du processus).
C'est forcément un problème Unicode <=> Ansi
Vérifie les propriéts du projet (comme "character set" pour VS)
"orax" a écrit dans le message de news: 4ad4d540$0$960$
Bonjour, j'essaie de compiler avec Qt Creator le code provenant de ce site : http://msdn.microsoft.com/en-us/library/ms686701(VS.85).aspx mais sans succès. Ca marche pourtant très bien avec Dev-C++ ou Visual C++ 6. J'ai tout de même pu le compiler en le simplifiant beaucoup. J'ai Qt Creator 1.2.1 avec Qt 4.5.2.
Voilà ci-dessous le code que j'ai à l'heure actuelle. Il s'exécute bien quand il est compilé avec DevC++ ou VC++ 6, mais quand il est compilé avec Qt Creator, le _tprintf() me renvoie, par exemple, "PROCESS NAME: P", (juste une lettre, au lieu de me renvoyer le nom complet du processus).
C'est forcément un problème Unicode <=> Ansi Vérifie les propriéts du projet (comme "character set" pour VS)
orax
Le seul truc que j'ai trouvé c'est : menu Edit->Select Encoding... J'ai sélectionné UTF-8 mais ça ne change rien, je pense que c'est juste l'encodage des fichiers sources.
Le seul truc que j'ai trouvé c'est : menu Edit->Select Encoding... J'ai
sélectionné UTF-8 mais ça ne change rien, je pense que c'est juste
l'encodage des fichiers sources.
Le seul truc que j'ai trouvé c'est : menu Edit->Select Encoding... J'ai sélectionné UTF-8 mais ça ne change rien, je pense que c'est juste l'encodage des fichiers sources.
Loïc
"orax" a écrit dans le message de news: 4ad4eeae$0$965$
Le seul truc que j'ai trouvé c'est : menu Edit->Select Encoding... J'ai sélectionné UTF-8 mais ça ne change rien, je pense que c'est juste l'encodage des fichiers sources.
Tu as débuggé ? En mettant un break sur pe32.szExeFile pour évaluer sa valeur Et tester en enlevant TEXT(), qui est pour l'Unicode.
"orax" <a@a.a> a écrit dans le message de news:
4ad4eeae$0$965$ba4acef3@news.orange.fr...
Le seul truc que j'ai trouvé c'est : menu Edit->Select Encoding... J'ai
sélectionné UTF-8 mais ça ne change rien, je pense que c'est juste
l'encodage des fichiers sources.
Tu as débuggé ? En mettant un break sur pe32.szExeFile pour évaluer sa
valeur
Et tester en enlevant TEXT(), qui est pour l'Unicode.
"orax" a écrit dans le message de news: 4ad4eeae$0$965$
Le seul truc que j'ai trouvé c'est : menu Edit->Select Encoding... J'ai sélectionné UTF-8 mais ça ne change rien, je pense que c'est juste l'encodage des fichiers sources.
Tu as débuggé ? En mettant un break sur pe32.szExeFile pour évaluer sa valeur Et tester en enlevant TEXT(), qui est pour l'Unicode.
orax
Loïc a écrit :
Tu as débuggé ? En mettant un break sur pe32.szExeFile pour évaluer sa valeur Et tester en enlevant TEXT(), qui est pour l'Unicode.
Oui, j'avais déjà essayé tout ça. Je l'ai débuggé mais je ne vois pas vraiment la valeur de pe32.szExeFile, disons plutôt que je vois les valeurs ASCII contenues dans le tableau WCHAR (pe32.szExeFile est un WCHAR). Je vois, par exemple, pour le premier arrêt sur le breakpoint : 91, 83, 121, 115, 116, ..., ce qui correspond au premier nom de processus : [System]. Je vois donc dans le débuggueur, les valeurs ASCII (ou Unicode, je ne sais pas), au lieu de voir une chaine de caractères.
Et j'ai dû oublié de le dire, j'ai un avertissement au moment de la compilation : main.cpp:49: warning: char format, different type arg (arg 2)
et c'est au niveau de la ligne : _tprintf( TEXT("nPROCESS NAME: %s"), pe32.szExeFile );
Par contre, avec VC++ et devcpp, je n'ai pas d'erreur ni d'avertissement.
Loïc a écrit :
Tu as débuggé ? En mettant un break sur pe32.szExeFile pour évaluer sa
valeur
Et tester en enlevant TEXT(), qui est pour l'Unicode.
Oui, j'avais déjà essayé tout ça. Je l'ai débuggé mais je ne vois pas
vraiment la valeur de pe32.szExeFile, disons plutôt que je vois les
valeurs ASCII contenues dans le tableau WCHAR (pe32.szExeFile est un
WCHAR). Je vois, par exemple, pour le premier arrêt sur le breakpoint :
91, 83, 121, 115, 116, ..., ce qui correspond au premier nom de
processus : [System]. Je vois donc dans le débuggueur, les valeurs ASCII
(ou Unicode, je ne sais pas), au lieu de voir une chaine de caractères.
Et j'ai dû oublié de le dire, j'ai un avertissement au moment de la
compilation :
main.cpp:49: warning: char format, different type arg (arg 2)
et c'est au niveau de la ligne :
_tprintf( TEXT("nPROCESS NAME: %s"), pe32.szExeFile );
Par contre, avec VC++ et devcpp, je n'ai pas d'erreur ni d'avertissement.
Tu as débuggé ? En mettant un break sur pe32.szExeFile pour évaluer sa valeur Et tester en enlevant TEXT(), qui est pour l'Unicode.
Oui, j'avais déjà essayé tout ça. Je l'ai débuggé mais je ne vois pas vraiment la valeur de pe32.szExeFile, disons plutôt que je vois les valeurs ASCII contenues dans le tableau WCHAR (pe32.szExeFile est un WCHAR). Je vois, par exemple, pour le premier arrêt sur le breakpoint : 91, 83, 121, 115, 116, ..., ce qui correspond au premier nom de processus : [System]. Je vois donc dans le débuggueur, les valeurs ASCII (ou Unicode, je ne sais pas), au lieu de voir une chaine de caractères.
Et j'ai dû oublié de le dire, j'ai un avertissement au moment de la compilation : main.cpp:49: warning: char format, different type arg (arg 2)
et c'est au niveau de la ligne : _tprintf( TEXT("nPROCESS NAME: %s"), pe32.szExeFile );
Par contre, avec VC++ et devcpp, je n'ai pas d'erreur ni d'avertissement.
nico
orax wrote:
Loïc a écrit :
Tu as débuggé ? En mettant un break sur pe32.szExeFile pour évaluer sa valeur Et tester en enlevant TEXT(), qui est pour l'Unicode.
Oui, j'avais déjà essayé tout ça. Je l'ai débuggé mais je ne vois pas vraiment la valeur de pe32.szExeFile, disons plutôt que je vois les valeurs ASCII contenues dans le tableau WCHAR (pe32.szExeFile est un WCHAR).
Non pas forcément, PROCESSENTRY32 dépend des options Unicode ou pas (tu le vois dans le .h) Si tu as 91, 83, 121, 115, 116, c'est que c'est pas Unicode Si tu fais juste un printf, ça devrait l'afficher... (ou alors tu convertis avec MultiByteToWideChar ou d'autres fonctions)
orax wrote:
Loïc a écrit :
Tu as débuggé ? En mettant un break sur pe32.szExeFile pour évaluer
sa valeur
Et tester en enlevant TEXT(), qui est pour l'Unicode.
Oui, j'avais déjà essayé tout ça. Je l'ai débuggé mais je ne vois pas
vraiment la valeur de pe32.szExeFile, disons plutôt que je vois les
valeurs ASCII contenues dans le tableau WCHAR (pe32.szExeFile est un
WCHAR).
Non pas forcément, PROCESSENTRY32 dépend des options Unicode ou pas (tu
le vois dans le .h)
Si tu as 91, 83, 121, 115, 116, c'est que c'est pas Unicode
Si tu fais juste un printf, ça devrait l'afficher...
(ou alors tu convertis avec MultiByteToWideChar ou d'autres fonctions)
Tu as débuggé ? En mettant un break sur pe32.szExeFile pour évaluer sa valeur Et tester en enlevant TEXT(), qui est pour l'Unicode.
Oui, j'avais déjà essayé tout ça. Je l'ai débuggé mais je ne vois pas vraiment la valeur de pe32.szExeFile, disons plutôt que je vois les valeurs ASCII contenues dans le tableau WCHAR (pe32.szExeFile est un WCHAR).
Non pas forcément, PROCESSENTRY32 dépend des options Unicode ou pas (tu le vois dans le .h) Si tu as 91, 83, 121, 115, 116, c'est que c'est pas Unicode Si tu fais juste un printf, ça devrait l'afficher... (ou alors tu convertis avec MultiByteToWideChar ou d'autres fonctions)