begin process at 2008 07 04 11:50:48
1 204 587 membres
128 nouveaux aujourd'hui
14 116 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Erreur ennuyeuse... [ Système / Autre ] (Vortigaunt)

Erreur ennuyeuse... le 09/03/2008 17:12:43

Vortigaunt
Bonjour à tous, J'ai un petit problème sous C::B. J'aimerai obtenir, à partir d'un processus, son chemin absolu. Je n'ai pas de problème lors de l'ouverture du processus, ni de l'affichage de son nom (style msnmgr.exe). Le problème se situe lorsque j'utilise la fonction GetModuleFileNameEx(), car sous code::blocks, impossible à faire fonctionner sans l'erreur du compilateur: undefined reference to `GetModuleFileNameExA@16' Quelqu'un aurait-il une idée ? Merci d'avance..

Re : Erreur ennuyeuse... le 09/03/2008 17:36:55

Neo_Fr
Membre Club
Salut, Tu as bien inclue psapi.h et linker avec psapi.lib? Neo_Fr

Re : Erreur ennuyeuse... le 09/03/2008 17:37:58

racpp
(Admin CS)
Salut,
Cette fonction se trouve dans psapi.dll. Il faudra donc lier ton projet avec psapi.lib. Une option du linker du genre -lpsapi serait aussi possible. La dernière solution reste le chargement dynamique avec LoadLibray() et GetProcAddress().


Re : Erreur ennuyeuse... le 09/03/2008 17:42:39

Vortigaunt
Bonjour, et merci pour vos réponses. Je vais essayer, je vous tiens au courant.

Re : Erreur ennuyeuse... le 09/03/2008 17:48:41

Vortigaunt
J'ai essayé de linker psapi.lib, mais çà ne fonctionne pas. J'ai ensuite essayé -lpsapi, marche pas non plus. Comment utiliser LoadLibrary() et GetProcAddress() ?

Re : Erreur ennuyeuse... le 09/03/2008 18:15:45

racpp
(Admin CS)
//Définir un type de pointeur pour GetModuleFileNameEx():
typedef DWORD (WINAPI* PGETMODULEFILENAMEEX) (HANDLE, HMODULE, LPTSTR, DWORD);
// Charger la DLL psapi.dll
HMODULE hDll=LoadLibrary("psapi.dll");
// Obtenir l'adresse de la fonction GetMuduleFileNameExA():
PGETMODULEFILENAMEEX getmodulefilenameex=(PGETMODULEFILENAMEEX)GetProcAddress(hDll,"GetModuleFileNameExA");
//Appel de la fonction:
getmodulefilenameex(....);
//....
// Libérer la DLL en fin d'utilisation:

FreeLibrary(hDll);



Re : Erreur ennuyeuse... le 09/03/2008 18:17:31

Neo_Fr
Membre Club
Essaye ce code pour voir: #include #include DWORD __stdcall GetPID(LPSTR lpszProcessName) { HANDLE hSnapshot; PROCESSENTRY32 ProcessEntry; DWORD dwPID = 0; hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(hSnapshot == INVALID_HANDLE_VALUE) return 0; ProcessEntry.dwSize = sizeof(PROCESSENTRY32); if(!Process32First(hSnapshot, &ProcessEntry)) { CloseHandle(hSnapshot); return 0; } while(1) { if(!strcmp(lpszProcessName, ProcessEntry.szExeFile)) { dwPID = ProcessEntry.th32ProcessID; break; } if(!Process32Next(hSnapshot, &ProcessEntry)) break; } CloseHandle(hSnapshot); return dwPID; } DWORD __stdcall GetProcessPath(DWORD dwPID, LPSTR lpszRet) { HANDLE hProcess; hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, dwPID); if(!hProcess) return 1; if(!GetModuleFileNameEx(hProcess, 0, lpszRet, MAX_PATH)) { CloseHandle(hProcess); return 1; } CloseHandle(hProcess); return 0; } char szProcessPath[MAX_PATH+4]; GetProcessPath(GetPID("msnmsgr.exe"), szProcessPath); MessageBox(0, szProcessPath, 0, 0x40); Chez moi sous Devcpp sa compile sans pbs.. Neo_Fr

Re : Erreur ennuyeuse... le 09/03/2008 18:31:27

racpp
(Admin CS)
Neo_Fr >> Le problème se situe au niveau de l'édition des liens. Même si ça compile correctement, l'exécutable ne sera généré qu'après avoir ajouté la liaison avec psapi.dll. Si ton exe est généré, ça prouve que ton projet est déjà lié avec cette dll. Il s'agit sûrement d'une option du linker présente dans ton projet.


Re : Erreur ennuyeuse... le 09/03/2008 18:39:05

Neo_Fr
Membre Club
Nan j'ai bien ajouter manuellement -lpsapi ds les options, ce qui m'étonne c'est que ca ne compile pas chez lui alors qu'on utilise le meme compilateur Neo_Fr

Re : Erreur ennuyeuse... le 09/03/2008 18:43:22

racpp
(Admin CS)
undefined reference to `GetModuleFileNameExA@16'
est un message d'erreur de l'éditeur de liens.



[Page 1 Page 2]
Classé sous : problème, erreur, processus, ennuyeuse

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS