Process32[First|Next](), szExeFile, et nom de fichiers sous 2k
6 réponses
cLx
Bonjour!
J'ai un petit problème depuis un moment avec Process32First() et
Process32Next() qui, sous 2k en tout cas, me retournent seulement une partie
du nom de fichier executable dans le membre "szExeFile" de la structure
PROCESSENTRY32.
Sous les windows précédents, il mettait le chemin complet. La je n'ai que
les 15 premiers caractères du fichier sans le reste du path.
J'imagine qu'il faut appeler une autre fonction et lui donner le PID contenu
dans le membre th32ProcessID pour connaitre le nom complet, mais n'ai pas
reussi a trouver ça. Je n'ai pas reussi a me servir de GetModuleFileName()
et google n'a pas vraiment été mon ami sur ce coup là.
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
Christian ASTOR
cLx wrote:
J'ai un petit problème depuis un moment avec Process32First() et Process32Next() qui, sous 2k en tout cas, me retournent seulement une partie du nom de fichier executable dans le membre "szExeFile" de la structure PROCESSENTRY32. Sous les windows précédents, il mettait le chemin complet. La je n'ai que les 15 premiers caractères du fichier sans le reste du path. J'imagine qu'il faut appeler une autre fonction et lui donner le PID contenu dans le membre th32ProcessID pour connaitre le nom complet, mais n'ai pas reussi a trouver ça. Je n'ai pas reussi a me servir de GetModuleFileName() et google n'a pas vraiment été mon ami sur ce coup là.
Sous XP SP1, szExeFile est correct. Utiliser sinon OpenProcess()-GetModuleFileNameEx().
cLx wrote:
J'ai un petit problème depuis un moment avec Process32First() et
Process32Next() qui, sous 2k en tout cas, me retournent seulement une partie
du nom de fichier executable dans le membre "szExeFile" de la structure
PROCESSENTRY32.
Sous les windows précédents, il mettait le chemin complet. La je n'ai que
les 15 premiers caractères du fichier sans le reste du path.
J'imagine qu'il faut appeler une autre fonction et lui donner le PID contenu
dans le membre th32ProcessID pour connaitre le nom complet, mais n'ai pas
reussi a trouver ça. Je n'ai pas reussi a me servir de GetModuleFileName()
et google n'a pas vraiment été mon ami sur ce coup là.
Sous XP SP1, szExeFile est correct.
Utiliser sinon OpenProcess()-GetModuleFileNameEx().
J'ai un petit problème depuis un moment avec Process32First() et Process32Next() qui, sous 2k en tout cas, me retournent seulement une partie du nom de fichier executable dans le membre "szExeFile" de la structure PROCESSENTRY32. Sous les windows précédents, il mettait le chemin complet. La je n'ai que les 15 premiers caractères du fichier sans le reste du path. J'imagine qu'il faut appeler une autre fonction et lui donner le PID contenu dans le membre th32ProcessID pour connaitre le nom complet, mais n'ai pas reussi a trouver ça. Je n'ai pas reussi a me servir de GetModuleFileName() et google n'a pas vraiment été mon ami sur ce coup là.
Sous XP SP1, szExeFile est correct. Utiliser sinon OpenProcess()-GetModuleFileNameEx().
cLx
Christian ASTOR wrote:
Sous XP SP1, szExeFile est correct. Utiliser sinon OpenProcess()-GetModuleFileNameEx().
D'accord, ça a l'air de marcher a par que... ça plante après quelques appels. J'ai utilisé, apres avoir fait un pointeur pGetModuleFileNameEx sur la fonction GetModuleFileNameExA dans Psapi.dll :
J'ai un peu de mal a comprendre où est le bug, mais j'ai avancé! merci.
-- cLx http://clx.freeshell.org/
Christian ASTOR wrote:
Sous XP SP1, szExeFile est correct.
Utiliser sinon OpenProcess()-GetModuleFileNameEx().
D'accord, ça a l'air de marcher a par que... ça plante après quelques
appels. J'ai utilisé, apres avoir fait un pointeur pGetModuleFileNameEx sur
la fonction GetModuleFileNameExA dans Psapi.dll :
Sous XP SP1, szExeFile est correct. Utiliser sinon OpenProcess()-GetModuleFileNameEx().
D'accord, ça a l'air de marcher a par que... ça plante après quelques appels. J'ai utilisé, apres avoir fait un pointeur pGetModuleFileNameEx sur la fonction GetModuleFileNameExA dans Psapi.dll :
Un probleme avec la convention d'appel ? Un stdcall manquant ou quelquechose comme ca ?
Je vais ça avec un pointeur de fonction pour deux raisons : - Cette fonction n'existe pas sous 9x et je veux que mon programme marche aussi là bas (pas de probleme, avec eux car szExeFile contient ce qu'il faut, en tout cas au moins sur w4.1). Sous NT, il suffit de charger la dll qui va bien.
- J'utilise dev-C++ et même si j'ai GetModuleFileName (qui existe sous 9x), je n'ai pas GetModuleFileNameEx. :)
Par contre, j'ai du mal a m'expliquer ce plantage. Je sens qu'il va me falloir plusieurs jours de méditation pour comprendre ça...
En tout cas, ça a avancé le schmilblick quand même! :)
Un probleme avec la convention d'appel ? Un stdcall manquant ou quelquechose comme
ca ?
Je vais ça avec un pointeur de fonction pour deux raisons :
- Cette fonction n'existe pas sous 9x et je veux que mon programme marche
aussi là bas (pas de probleme, avec eux car szExeFile contient ce qu'il
faut, en tout cas au moins sur w4.1). Sous NT, il suffit de charger la dll
qui va bien.
- J'utilise dev-C++ et même si j'ai GetModuleFileName (qui existe sous 9x),
je n'ai pas GetModuleFileNameEx. :)
Par contre, j'ai du mal a m'expliquer ce plantage. Je sens qu'il va me
falloir plusieurs jours de méditation pour comprendre ça...
En tout cas, ça a avancé le schmilblick quand même! :)
Un probleme avec la convention d'appel ? Un stdcall manquant ou quelquechose comme ca ?
Je vais ça avec un pointeur de fonction pour deux raisons : - Cette fonction n'existe pas sous 9x et je veux que mon programme marche aussi là bas (pas de probleme, avec eux car szExeFile contient ce qu'il faut, en tout cas au moins sur w4.1). Sous NT, il suffit de charger la dll qui va bien.
- J'utilise dev-C++ et même si j'ai GetModuleFileName (qui existe sous 9x), je n'ai pas GetModuleFileNameEx. :)
Par contre, j'ai du mal a m'expliquer ce plantage. Je sens qu'il va me falloir plusieurs jours de méditation pour comprendre ça...
En tout cas, ça a avancé le schmilblick quand même! :)
Pas de cas particulier dans MSDN ?
J'en ai pas vu en tout cas.
-- cLx http://clx.freeshell.org/
Thierry
Bonjour,
cLx a écrit :
Par contre, j'ai du mal a m'expliquer ce plantage. Je sens qu'il va me falloir plusieurs jours de méditation pour comprendre ça...
Probablement la conventtion d'appel que le disait Dominique, faut préciser __stdcall ou son alias WINAPI lors du typedef: typedef DWORD (WINAPI GetModuleFileNameEx)( HANDLE hProcess, HMODULE hModule, LPTSTR lpFilename, DWORD nSize );
Ou alors ton buffer filename qu'a pas la taille MAX_PATH précisé.
-- « Le travail est probablement ce qu'il y a sur cette terre de plus bas et de plus ignoble. Il n'est pas possible de regarder un travailleur sans maudire ce qui a fait que cet homme travaille, alors qu'il pourrait nager, dormir dans l'herbe ou simplement lire ou faire l'amour avec sa femme. » Boris VIAN
Mon blog RSS : http://yarglah.free.fr/monblog_rss.php <<
Bonjour,
cLx a écrit :
Par contre, j'ai du mal a m'expliquer ce plantage. Je sens qu'il va me
falloir plusieurs jours de méditation pour comprendre ça...
Probablement la conventtion d'appel que le disait Dominique, faut préciser
__stdcall ou son alias WINAPI lors du typedef:
typedef DWORD (WINAPI GetModuleFileNameEx)(
HANDLE hProcess,
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize
);
Ou alors ton buffer filename qu'a pas la taille MAX_PATH précisé.
--
« Le travail est probablement ce qu'il y a sur cette terre de plus bas et
de plus ignoble. Il n'est pas possible de regarder un travailleur sans
maudire ce qui a fait que cet homme travaille, alors qu'il pourrait nager,
dormir dans l'herbe ou simplement lire ou faire l'amour avec sa femme. »
Boris VIAN
Mon blog RSS : http://yarglah.free.fr/monblog_rss.php <<
Par contre, j'ai du mal a m'expliquer ce plantage. Je sens qu'il va me falloir plusieurs jours de méditation pour comprendre ça...
Probablement la conventtion d'appel que le disait Dominique, faut préciser __stdcall ou son alias WINAPI lors du typedef: typedef DWORD (WINAPI GetModuleFileNameEx)( HANDLE hProcess, HMODULE hModule, LPTSTR lpFilename, DWORD nSize );
Ou alors ton buffer filename qu'a pas la taille MAX_PATH précisé.
-- « Le travail est probablement ce qu'il y a sur cette terre de plus bas et de plus ignoble. Il n'est pas possible de regarder un travailleur sans maudire ce qui a fait que cet homme travaille, alors qu'il pourrait nager, dormir dans l'herbe ou simplement lire ou faire l'amour avec sa femme. » Boris VIAN
Mon blog RSS : http://yarglah.free.fr/monblog_rss.php <<
Thierry
Bonjour,
cLx a écrit :
Par contre, j'ai du mal a m'expliquer ce plantage. Je sens qu'il va me falloir plusieurs jours de méditation pour comprendre ça...
Probablement la conventtion d'appel comme le disait Dominique, faut préciser __stdcall ou son alias WINAPI lors du typedef: typedef DWORD (WINAPI GetModuleFileNameEx)( HANDLE hProcess, HMODULE hModule, LPTSTR lpFilename, DWORD nSize );
Ou alors ton buffer filename qu'a pas la taille MAX_PATH précisé.
-- « Le travail est probablement ce qu'il y a sur cette terre de plus bas et de plus ignoble. Il n'est pas possible de regarder un travailleur sans maudire ce qui a fait que cet homme travaille, alors qu'il pourrait nager, dormir dans l'herbe ou simplement lire ou faire l'amour avec sa femme. » Boris VIAN
Mon blog RSS : http://yarglah.free.fr/monblog_rss.php <<
Bonjour,
cLx a écrit :
Par contre, j'ai du mal a m'expliquer ce plantage. Je sens qu'il va me
falloir plusieurs jours de méditation pour comprendre ça...
Probablement la conventtion d'appel comme le disait Dominique, faut
préciser __stdcall ou son alias WINAPI lors du typedef:
typedef DWORD (WINAPI GetModuleFileNameEx)(
HANDLE hProcess,
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize
);
Ou alors ton buffer filename qu'a pas la taille MAX_PATH précisé.
--
« Le travail est probablement ce qu'il y a sur cette terre de plus bas et
de plus ignoble. Il n'est pas possible de regarder un travailleur sans
maudire ce qui a fait que cet homme travaille, alors qu'il pourrait nager,
dormir dans l'herbe ou simplement lire ou faire l'amour avec sa femme. »
Boris VIAN
Mon blog RSS : http://yarglah.free.fr/monblog_rss.php <<
Par contre, j'ai du mal a m'expliquer ce plantage. Je sens qu'il va me falloir plusieurs jours de méditation pour comprendre ça...
Probablement la conventtion d'appel comme le disait Dominique, faut préciser __stdcall ou son alias WINAPI lors du typedef: typedef DWORD (WINAPI GetModuleFileNameEx)( HANDLE hProcess, HMODULE hModule, LPTSTR lpFilename, DWORD nSize );
Ou alors ton buffer filename qu'a pas la taille MAX_PATH précisé.
-- « Le travail est probablement ce qu'il y a sur cette terre de plus bas et de plus ignoble. Il n'est pas possible de regarder un travailleur sans maudire ce qui a fait que cet homme travaille, alors qu'il pourrait nager, dormir dans l'herbe ou simplement lire ou faire l'amour avec sa femme. » Boris VIAN
Mon blog RSS : http://yarglah.free.fr/monblog_rss.php <<