Accueil > Forum > > > > Comment retrouver le path en ayant que le nom du fichier
Comment retrouver le path en ayant que le nom du fichier
mardi 8 juillet 2003 à 15:38:46 |
Comment retrouver le path en ayant que le nom du fichier

Xentor609
|
salut! Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution ! Avec les process, je n'obtiens que le nom du fichier (par exemple, winlogon.exe). J'ai déjà essayé avec GetModuleFileName, mais il faut le HMODULE correspondant. J'ai donc utilisé GetModuleHandle mais il faut le chemin d'accès au complet ! Quelqu'un pourrait m'aider? D'avance merci pour vos réponses ! Xentor609
|
|
mardi 8 juillet 2003 à 15:56:52 |
Re : Comment retrouver le path en ayant que le nom du fichier

BruNews
|
le nom du ficher en memoire qui tourne, tu l'as eu comment ? C'est au moment ou tu recup cela qu'il faut aussi soit le HMODULE, soit le processid ou un truc qui l'identifie de maniere unique. BruNews, ciao...
------------------------------- Réponse au message : -------------------------------
> salut! > Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution ! > Avec les process, je n'obtiens que le nom du fichier (par exemple, winlogon.exe). > J'ai déjà essayé avec GetModuleFileName, mais il faut le HMODULE correspondant. J'ai donc utilisé GetModuleHandle mais il faut le chemin d'accès au complet ! > > Quelqu'un pourrait m'aider? > > D'avance merci pour vos réponses ! > > Xentor609
|
|
mardi 8 juillet 2003 à 16:31:50 |
Re : Comment retrouver le path en ayant que le nom du fichier

Xentor609
|
voila, comment je recupere le filename de l'exe en memoire ... PROCESSENTRY32 pe32 = {0}; ... pe32.szExeFile //ici ...
|
Le prob, comme je l'ai dit c'est qu'il ne me donne que le nom de l'exe et pas le chemin d'acces complet. Comment faire? ------------------------------- Réponse au message : ------------------------------- > le nom du ficher en memoire qui tourne, tu l'as eu comment ? > C'est au moment ou tu recup cela qu'il faut aussi soit le HMODULE, soit le processid ou un truc qui l'identifie de maniere unique. > BruNews, ciao... > > > ------------------------------- > Réponse au message : > ------------------------------- > > > salut! > > Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution ! > > Avec les process, je n'obtiens que le nom du fichier (par exemple, winlogon.exe). > > J'ai déjà essayé avec GetModuleFileName, mais il faut le HMODULE correspondant. J'ai donc utilisé GetModuleHandle mais il faut le chemin d'accès au complet ! > > > > Quelqu'un pourrait m'aider? > > > > D'avance merci pour vos réponses ! > > > > Xentor609 >
|
|
mardi 8 juillet 2003 à 16:40:21 |
Re : Comment retrouver le path en ayant que le nom du fichier

BruNews
|
fais un essai avec le membre th32ParentProcessID pour GetModuleFilename. BruNews, ciao... ------------------------------- Réponse au message : ------------------------------- > voila, comment je recupere le filename de l'exe en memoire > > > ... > PROCESSENTRY32 pe32 = {0}; > ... > pe32.szExeFile //ici > ... > |
> > Le prob, comme je l'ai dit c'est qu'il ne me donne que le nom de l'exe et pas le chemin d'acces complet. > Comment faire? > > ------------------------------- > Réponse au message : > ------------------------------- > > > le nom du ficher en memoire qui tourne, tu l'as eu comment ? > > C'est au moment ou tu recup cela qu'il faut aussi soit le HMODULE, soit le processid ou un truc qui l'identifie de maniere unique. > > BruNews, ciao... > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > salut! > > > Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution ! > > > Avec les process, je n'obtiens que le nom du fichier (par exemple, winlogon.exe). > > > J'ai déjà essayé avec GetModuleFileName, mais il faut le HMODULE correspondant. J'ai donc utilisé GetModuleHandle mais il faut le chemin d'accès au complet ! > > > > > > Quelqu'un pourrait m'aider? > > > > > > D'avance merci pour vos réponses ! > > > > > > Xentor609 > > >
|
|
mardi 8 juillet 2003 à 18:56:49 |
Re : Comment retrouver le path en ayant que le nom du fichier

Xentor609
|
j'ai essayé mais ca ne donne rien HMODULE hModule=(HMODULE)pe32.th32ParentProcessID; szPath[256]=""; GetModuleFileName(hModule,szPath,sizeof(szPath));
|
szPath est vide ! Où est le problème ? ------------------------------- Réponse au message : ------------------------------- > fais un essai avec le membre th32ParentProcessID pour GetModuleFilename. > BruNews, ciao... > > > ------------------------------- > Réponse au message : > ------------------------------- > > > voila, comment je recupere le filename de l'exe en memoire > > > > > > ... > > PROCESSENTRY32 pe32 = {0}; > > ... > > pe32.szExeFile //ici > > ... > > |
> > > > Le prob, comme je l'ai dit c'est qu'il ne me donne que le nom de l'exe et pas le chemin d'acces complet. > > Comment faire? > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > le nom du ficher en memoire qui tourne, tu l'as eu comment ? > > > C'est au moment ou tu recup cela qu'il faut aussi soit le HMODULE, soit le processid ou un truc qui l'identifie de maniere unique. > > > BruNews, ciao... > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > salut! > > > > Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution ! > > > > Avec les process, je n'obtiens que le nom du fichier (par exemple, winlogon.exe). > > > > J'ai déjà essayé avec GetModuleFileName, mais il faut le HMODULE correspondant. J'ai donc utilisé GetModuleHandle mais il faut le chemin d'accès au complet ! > > > > > > > > Quelqu'un pourrait m'aider? > > > > > > > > D'avance merci pour vos réponses ! > > > > > > > > Xentor609 > > > > > >
|
|
mardi 8 juillet 2003 à 19:12:58 |
Re : Comment retrouver le path en ayant que le nom du fichier

BruNews
|
VOILA le MSDN: #include <windows.h> #include <tlhelp32.h> #include <stdio.h> BOOL GetProcessList () { HANDLE hProcessSnap = NULL; BOOL bRet = FALSE; PROCESSENTRY32 pe32 = {0}; // Take a snapshot of all processes in the system. hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) return (FALSE); // Fill in the size of the structure before using it. pe32.dwSize = sizeof(PROCESSENTRY32); // Walk the snapshot of the processes, and for each process, // display information. if (Process32First(hProcessSnap, &pe32)) { DWORD dwPriorityClass; BOOL bGotModule = FALSE; MODULEENTRY32 me32 = {0}; do { bGotModule = GetProcessModule(pe32.th32ProcessID, pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32)); if (bGotModule) { HANDLE hProcess; // Get the actual priority class. hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); dwPriorityClass = GetPriorityClass (hProcess); CloseHandle (hProcess); // Print the process's information. printf( "\nPriority Class Base\t%d\n", pe32.pcPriClassBase); printf( "PID\t\t\t%d\n", pe32.th32ProcessID); printf( "Thread Count\t\t%d\n", pe32.cntThreads); printf( "Module Name\t\t%s\n", me32.szModule); printf( "Full Path\t\t%s\n\n", me32.szExePath); } } while (Process32Next(hProcessSnap, &pe32)); bRet = TRUE; } else bRet = FALSE; // could not walk the list of processes // Do not forget to clean up the snapshot object. CloseHandle (hProcessSnap); return (bRet); } BruNews, ciao... ------------------------------- Réponse au message : ------------------------------- > j'ai essayé mais ca ne donne rien > > > HMODULE hModule=(HMODULE)pe32.th32ParentProcessID; > szPath[256]=""; > GetModuleFileName(hModule,szPath,sizeof(szPath)); > |
> szPath est vide ! > > Où est le problème ? > > ------------------------------- > Réponse au message : > ------------------------------- > > > fais un essai avec le membre th32ParentProcessID pour GetModuleFilename. > > BruNews, ciao... > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > voila, comment je recupere le filename de l'exe en memoire > > > > > > > > > ... > > > PROCESSENTRY32 pe32 = {0}; > > > ... > > > pe32.szExeFile //ici > > > ... > > > |
> > > > > > Le prob, comme je l'ai dit c'est qu'il ne me donne que le nom de l'exe et pas le chemin d'acces complet. > > > Comment faire? > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > le nom du ficher en memoire qui tourne, tu l'as eu comment ? > > > > C'est au moment ou tu recup cela qu'il faut aussi soit le HMODULE, soit le processid ou un truc qui l'identifie de maniere unique. > > > > BruNews, ciao... > > > > > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > salut! > > > > > Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution ! > > > > > Avec les process, je n'obtiens que le nom du fichier (par exemple, winlogon.exe). > > > > > J'ai déjà essayé avec GetModuleFileName, mais il faut le HMODULE correspondant. J'ai donc utilisé GetModuleHandle mais il faut le chemin d'accès au complet ! > > > > > > > > > > Quelqu'un pourrait m'aider? > > > > > > > > > > D'avance merci pour vos réponses ! > > > > > > > > > > Xentor609 > > > > > > > > > >
|
|
mardi 8 juillet 2003 à 19:34:39 |
Re : Comment retrouver le path en ayant que le nom du fichier

Xentor609
|
J'ai déjà pris ce code dans MSDN, et il ne marche pas. #include <windows.h> #include <tlhelp32.h> #include <stdio.h>
BOOL GetProcessModule (DWORD dwPID, DWORD dwModuleID, LPMODULEENTRY32 lpMe32, DWORD cbMe32) { BOOL bRet = FALSE; BOOL bFound = FALSE; HANDLE hModuleSnap = NULL; MODULEENTRY32 me32 = {0}; // Take a snapshot of all modules in the specified process.
hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID); if (hModuleSnap == (HANDLE)-1) return (FALSE); // Fill the size of the structure before using it.
me32.dwSize = sizeof(MODULEENTRY32); // Walk the module list of the process, and find the module of // interest. Then copy the information to the buffer pointed // to by lpMe32 so that it can be returned to the caller.
if (Module32First(hModuleSnap, &me32)) { do { if (me32.th32ModuleID == dwModuleID) { CopyMemory (lpMe32, &me32, cbMe32); bFound = TRUE; } } while (!bFound && Module32Next(hModuleSnap, &me32)); bRet = bFound; // if this sets bRet to FALSE, dwModuleID // no longer exists in specified process } else bRet = FALSE; // could not walk module list // Do not forget to clean up the snapshot object.
CloseHandle (hModuleSnap); return (bRet); }
BOOL GetProcessList () { HANDLE hProcessSnap = NULL; BOOL bRet = FALSE; PROCESSENTRY32 pe32 = {0}; // Take a snapshot of all processes in the system.
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == (HANDLE)-1) return (FALSE); // Fill in the size of the structure before using it.
pe32.dwSize = sizeof(PROCESSENTRY32); // Walk the snapshot of the processes, and for each process, // display information.
if (Process32First(hProcessSnap, &pe32)) { DWORD dwPriorityClass; BOOL bGotModule = FALSE; MODULEENTRY32 me32 = {0}; do { bGotModule = GetProcessModule(pe32.th32ProcessID, pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32));
if (bGotModule) { HANDLE hProcess; // Get the actual priority class. hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); dwPriorityClass = GetPriorityClass (hProcess); CloseHandle (hProcess);
// Print the process's information. printf( "\nPriority Class Base\t%d\n", pe32.pcPriClassBase); printf( "PID\t\t\t%d\n", pe32.th32ProcessID); printf( "Thread Count\t\t%d\n", pe32.cntThreads); printf( "Module Name\t\t%s\n", me32.szModule); printf( "Full Path\t\t%s\n\n", me32.szExePath); } } while (Process32Next(hProcessSnap, &pe32)); bRet = TRUE; } else bRet = FALSE; // could not walk the list of processes // Do not forget to clean up the snapshot object.
CloseHandle (hProcessSnap); return (bRet); }
void main(void) { GetProcessList(); }
|
Je l'ai debuggé, et dans GetProcessList, bGotModule vaut tout le temps 0, donc il ne m'affiche rien ! Dans GetProcessModule, hModuleSnap vaut 0x000007dc la première fois mais, plus bas, à cette condition "if (me32.th32ModuleID == dwModuleID)" il bloque, donc bFound=false et bien entendu, la fonction GetProcessModule retourne false. Quant aux autres fois, hModuleSnap vaut tout le temps 0xffffffff, ce qui implique que cette condition "if (hModuleSnap == (HANDLE)-1)" est vérifiée et que la fonction GetProcessModule revoie encore et toujours false. Pourquoi le code de MSDN ne marche-t-il pas? Est-ce que la version du Windows peut être un facteur de ce problème? Je travaille sous Windows XP. Merci de bien vouloir m'éclaicir! Xentor609 ------------------------------- Réponse au message : ------------------------------- > VOILA le MSDN: > #include <windows.h> > #include <tlhelp32.h> > #include <stdio.h> > > BOOL GetProcessList () > { > HANDLE hProcessSnap = NULL; > BOOL bRet = FALSE; > PROCESSENTRY32 pe32 = {0}; > > // Take a snapshot of all processes in the system. > > hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); > > if (hProcessSnap == INVALID_HANDLE_VALUE) > return (FALSE); > > // Fill in the size of the structure before using it. > > pe32.dwSize = sizeof(PROCESSENTRY32); > > // Walk the snapshot of the processes, and for each process, > // display information. > > if (Process32First(hProcessSnap, &pe32)) > { > DWORD dwPriorityClass; > BOOL bGotModule = FALSE; > MODULEENTRY32 me32 = {0}; > > do > { > bGotModule = GetProcessModule(pe32.th32ProcessID, > pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32)); > > if (bGotModule) > { > HANDLE hProcess; > > // Get the actual priority class. > hProcess = OpenProcess (PROCESS_ALL_ACCESS, > FALSE, pe32.th32ProcessID); > dwPriorityClass = GetPriorityClass (hProcess); > CloseHandle (hProcess); > > // Print the process's information. > printf( "\nPriority Class Base\t%d\n", > pe32.pcPriClassBase); > printf( "PID\t\t\t%d\n", pe32.th32ProcessID); > printf( "Thread Count\t\t%d\n", pe32.cntThreads); > printf( "Module Name\t\t%s\n", me32.szModule); > printf( "Full Path\t\t%s\n\n", me32.szExePath); > } > } > while (Process32Next(hProcessSnap, &pe32)); > bRet = TRUE; > } > else > bRet = FALSE; // could not walk the list of processes > > // Do not forget to clean up the snapshot object. > > CloseHandle (hProcessSnap); > return (bRet); > } > > BruNews, ciao... > > > ------------------------------- > Réponse au message : > ------------------------------- > > > j'ai essayé mais ca ne donne rien > > > > > > HMODULE hModule=(HMODULE)pe32.th32ParentProcessID; > > szPath[256]=""; > > GetModuleFileName(hModule,szPath,sizeof(szPath)); > > |
> > szPath est vide ! > > > > Où est le problème ? > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > fais un essai avec le membre th32ParentProcessID pour GetModuleFilename. > > > BruNews, ciao... > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > voila, comment je recupere le filename de l'exe en memoire > > > > > > > > > > > > ... > > > > PROCESSENTRY32 pe32 = {0}; > > > > ... > > > > pe32.szExeFile //ici > > > > ... > > > > |
> > > > > > > > Le prob, comme je l'ai dit c'est qu'il ne me donne que le nom de l'exe et pas le chemin d'acces complet. > > > > Comment faire? > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > le nom du ficher en memoire qui tourne, tu l'as eu comment ? > > > > > C'est au moment ou tu recup cela qu'il faut aussi soit le HMODULE, soit le processid ou un truc qui l'identifie de maniere unique. > > > > > BruNews, ciao... > > > > > > > > > > > > > > > ------------------------------- > > > > > Réponse au message : > > > > > ------------------------------- > > > > > > > > > > > salut! > > > > > > Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution ! > > > > > > Avec les process, je n'obtiens que le nom du fichier (par exemple, winlogon.exe). > > > > > > J'ai déjà essayé avec GetModuleFileName, mais il faut le HMODULE correspondant. J'ai donc utilisé GetModuleHandle mais il faut le chemin d'accès au complet ! > > > > > > > > > > > > Quelqu'un pourrait m'aider? > > > > > > > > > > > > D'avance merci pour vos réponses ! > > > > > > > > > > > > Xentor609 > > > > > > > > > > > > > > >
|
|
mardi 8 juillet 2003 à 19:39:54 |
Re : Comment retrouver le path en ayant que le nom du fichier

BruNews
|
m'enerve ce truc, je teste, je te dis ensuite. BruNews, ciao... ------------------------------- Réponse au message : ------------------------------- > J'ai déjà pris ce code dans MSDN, et il ne marche pas. > > > #include <windows.h> > #include <tlhelp32.h> > #include <stdio.h> > > BOOL GetProcessModule (DWORD dwPID, DWORD dwModuleID, > LPMODULEENTRY32 lpMe32, DWORD cbMe32) > { > BOOL bRet = FALSE; > BOOL bFound = FALSE; > HANDLE hModuleSnap = NULL; > MODULEENTRY32 me32 = {0}; > > // Take a snapshot of all modules in the specified process. > > hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID); > if (hModuleSnap == (HANDLE)-1) > return (FALSE); > > // Fill the size of the structure before using it. > > me32.dwSize = sizeof(MODULEENTRY32); > > // Walk the module list of the process, and find the module of > // interest. Then copy the information to the buffer pointed > // to by lpMe32 so that it can be returned to the caller. > > if (Module32First(hModuleSnap, &me32)) > { > do > { > if (me32.th32ModuleID == dwModuleID) > { > CopyMemory (lpMe32, &me32, cbMe32); > bFound = TRUE; > } > } > while (!bFound && Module32Next(hModuleSnap, &me32)); > > bRet = bFound; // if this sets bRet to FALSE, dwModuleID > // no longer exists in specified process > } > else > bRet = FALSE; // could not walk module list > > // Do not forget to clean up the snapshot object. > > CloseHandle (hModuleSnap); > > return (bRet); > } > > BOOL GetProcessList () > { > HANDLE hProcessSnap = NULL; > BOOL bRet = FALSE; > PROCESSENTRY32 pe32 = {0}; > > // Take a snapshot of all processes in the system. > > hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); > > if (hProcessSnap == (HANDLE)-1) > return (FALSE); > > // Fill in the size of the structure before using it. > > pe32.dwSize = sizeof(PROCESSENTRY32); > > // Walk the snapshot of the processes, and for each process, > // display information. > > if (Process32First(hProcessSnap, &pe32)) > { > DWORD dwPriorityClass; > BOOL bGotModule = FALSE; > MODULEENTRY32 me32 = {0}; > > do > { > bGotModule = GetProcessModule(pe32.th32ProcessID, > pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32)); > > if (bGotModule) > { > HANDLE hProcess; > > // Get the actual priority class. > hProcess = OpenProcess (PROCESS_ALL_ACCESS, > FALSE, pe32.th32ProcessID); > dwPriorityClass = GetPriorityClass (hProcess); > CloseHandle (hProcess); > > // Print the process's information. > printf( "\nPriority Class Base\t%d\n", > pe32.pcPriClassBase); > printf( "PID\t\t\t%d\n", pe32.th32ProcessID); > printf( "Thread Count\t\t%d\n", pe32.cntThreads); > printf( "Module Name\t\t%s\n", me32.szModule); > printf( "Full Path\t\t%s\n\n", me32.szExePath); > } > } > while (Process32Next(hProcessSnap, &pe32)); > bRet = TRUE; > } > else > bRet = FALSE; // could not walk the list of processes > > // Do not forget to clean up the snapshot object. > > CloseHandle (hProcessSnap); > return (bRet); > } > > void main(void) > { > GetProcessList(); > } > |
> > Je l'ai debuggé, et dans GetProcessList, bGotModule vaut tout le temps 0, donc il ne m'affiche rien ! > Dans GetProcessModule, hModuleSnap vaut 0x000007dc la première fois mais, plus bas, à cette condition "if (me32.th32ModuleID == dwModuleID)" il bloque, donc bFound=false et bien entendu, la fonction GetProcessModule retourne false. Quant aux autres fois, hModuleSnap vaut tout le temps 0xffffffff, ce qui implique que cette condition "if (hModuleSnap == (HANDLE)-1)" est vérifiée et que la fonction GetProcessModule revoie encore et toujours false. > > Pourquoi le code de MSDN ne marche-t-il pas? > Est-ce que la version du Windows peut être un facteur de ce problème? > Je travaille sous Windows XP. > > Merci de bien vouloir m'éclaicir! > > Xentor609 > > ------------------------------- > Réponse au message : > ------------------------------- > > > VOILA le MSDN: > > #include <windows.h> > > #include <tlhelp32.h> > > #include <stdio.h> > > > > BOOL GetProcessList () > > { > > HANDLE hProcessSnap = NULL; > > BOOL bRet = FALSE; > > PROCESSENTRY32 pe32 = {0}; > > > > // Take a snapshot of all processes in the system. > > > > hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); > > > > if (hProcessSnap == INVALID_HANDLE_VALUE) > > return (FALSE); > > > > // Fill in the size of the structure before using it. > > > > pe32.dwSize = sizeof(PROCESSENTRY32); > > > > // Walk the snapshot of the processes, and for each process, > > // display information. > > > > if (Process32First(hProcessSnap, &pe32)) > > { > > DWORD dwPriorityClass; > > BOOL bGotModule = FALSE; > > MODULEENTRY32 me32 = {0}; > > > > do > > { > > bGotModule = GetProcessModule(pe32.th32ProcessID, > > pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32)); > > > > if (bGotModule) > > { > > HANDLE hProcess; > > > > // Get the actual priority class. > > hProcess = OpenProcess (PROCESS_ALL_ACCESS, > > FALSE, pe32.th32ProcessID); > > dwPriorityClass = GetPriorityClass (hProcess); > > CloseHandle (hProcess); > > > > // Print the process's information. > > printf( "\nPriority Class Base\t%d\n", > > pe32.pcPriClassBase); > > printf( "PID\t\t\t%d\n", pe32.th32ProcessID); > > printf( "Thread Count\t\t%d\n", pe32.cntThreads); > > printf( "Module Name\t\t%s\n", me32.szModule); > > printf( "Full Path\t\t%s\n\n", me32.szExePath); > > } > > } > > while (Process32Next(hProcessSnap, &pe32)); > > bRet = TRUE; > > } > > else > > bRet = FALSE; // could not walk the list of processes > > > > // Do not forget to clean up the snapshot object. > > > > CloseHandle (hProcessSnap); > > return (bRet); > > } > > > > BruNews, ciao... > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > j'ai essayé mais ca ne donne rien > > > > > > > > > HMODULE hModule=(HMODULE)pe32.th32ParentProcessID; > > > szPath[256]=""; > > > GetModuleFileName(hModule,szPath,sizeof(szPath)); > > > |
> > > szPath est vide ! > > > > > > Où est le problème ? > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > fais un essai avec le membre th32ParentProcessID pour GetModuleFilename. > > > > BruNews, ciao... > > > > > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > voila, comment je recupere le filename de l'exe en memoire > > > > > > > > > > > > > > > ... > > > > > PROCESSENTRY32 pe32 = {0}; > > > > > ... > > > > > pe32.szExeFile //ici > > > > > ... > > > > > |
> > > > > > > > > > Le prob, comme je l'ai dit c'est qu'il ne me donne que le nom de l'exe et pas le chemin d'acces complet. > > > > > Comment faire? > > > > > > > > > > ------------------------------- > > > > > Réponse au message : > > > > > ------------------------------- > > > > > > > > > > > le nom du ficher en memoire qui tourne, tu l'as eu comment ? > > > > > > C'est au moment ou tu recup cela qu'il faut aussi soit le HMODULE, soit le processid ou un truc qui l'identifie de maniere unique. > > > > > > BruNews, ciao... > > > > > > > > > > > > > > > > > > ------------------------------- > > > > > > Réponse au message : > > > > > > ------------------------------- > > > > > > > > > > > > > salut! > > > > > > > Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution ! > > > > > > > Avec les process, je n'obtiens que le nom du fichier (par exemple, winlogon.exe). > > > > > > > J'ai déjà essayé avec GetModuleFileName, mais il faut le HMODULE correspondant. J'ai donc utilisé GetModuleHandle mais il faut le chemin d'accès au complet ! > > > > > > > > > > > > > > Quelqu'un pourrait m'aider? > > > > > > > > > > > > > > D'avance merci pour vos réponses ! > > > > > > > > > > > > > > Xentor609 > > > > > > > > > > > > > > > > > > > > >
|
|
mardi 8 juillet 2003 à 19:46:07 |
Re : Comment retrouver le path en ayant que le nom du fichier

BruNews
|
Bon c'est fait, je te le mail. BruNews, ciao... ------------------------------- Réponse au message : ------------------------------- > J'ai déjà pris ce code dans MSDN, et il ne marche pas. > > > #include <windows.h> > #include <tlhelp32.h> > #include <stdio.h> > > BOOL GetProcessModule (DWORD dwPID, DWORD dwModuleID, > LPMODULEENTRY32 lpMe32, DWORD cbMe32) > { > BOOL bRet = FALSE; > BOOL bFound = FALSE; > HANDLE hModuleSnap = NULL; > MODULEENTRY32 me32 = {0}; > > // Take a snapshot of all modules in the specified process. > > hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID); > if (hModuleSnap == (HANDLE)-1) > return (FALSE); > > // Fill the size of the structure before using it. > > me32.dwSize = sizeof(MODULEENTRY32); > > // Walk the module list of the process, and find the module of > // interest. Then copy the information to the buffer pointed > // to by lpMe32 so that it can be returned to the caller. > > if (Module32First(hModuleSnap, &me32)) > { > do > { > if (me32.th32ModuleID == dwModuleID) > { > CopyMemory (lpMe32, &me32, cbMe32); > bFound = TRUE; > } > } > while (!bFound && Module32Next(hModuleSnap, &me32)); > > bRet = bFound; // if this sets bRet to FALSE, dwModuleID > // no longer exists in specified process > } > else > bRet = FALSE; // could not walk module list > > // Do not forget to clean up the snapshot object. > > CloseHandle (hModuleSnap); > > return (bRet); > } > > BOOL GetProcessList () > { > HANDLE hProcessSnap = NULL; > BOOL bRet = FALSE; > PROCESSENTRY32 pe32 = {0}; > > // Take a snapshot of all processes in the system. > > hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); > > if (hProcessSnap == (HANDLE)-1) > return (FALSE); > > // Fill in the size of the structure before using it. > > pe32.dwSize = sizeof(PROCESSENTRY32); > > // Walk the snapshot of the processes, and for each process, > // display information. > > if (Process32First(hProcessSnap, &pe32)) > { > DWORD dwPriorityClass; > BOOL bGotModule = FALSE; > MODULEENTRY32 me32 = {0}; > > do > { > bGotModule = GetProcessModule(pe32.th32ProcessID, > pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32)); > > if (bGotModule) > { > HANDLE hProcess; > > // Get the actual priority class. > hProcess = OpenProcess (PROCESS_ALL_ACCESS, > FALSE, pe32.th32ProcessID); > dwPriorityClass = GetPriorityClass (hProcess); > CloseHandle (hProcess); > > // Print the process's information. > printf( "\nPriority Class Base\t%d\n", > pe32.pcPriClassBase); > printf( "PID\t\t\t%d\n", pe32.th32ProcessID); > printf( "Thread Count\t\t%d\n", pe32.cntThreads); > printf( "Module Name\t\t%s\n", me32.szModule); > printf( "Full Path\t\t%s\n\n", me32.szExePath); > } > } > while (Process32Next(hProcessSnap, &pe32)); > bRet = TRUE; > } > else > bRet = FALSE; // could not walk the list of processes > > // Do not forget to clean up the snapshot object. > > CloseHandle (hProcessSnap); > return (bRet); > } > > void main(void) > { > GetProcessList(); > } > |
> > Je l'ai debuggé, et dans GetProcessList, bGotModule vaut tout le temps 0, donc il ne m'affiche rien ! > Dans GetProcessModule, hModuleSnap vaut 0x000007dc la première fois mais, plus bas, à cette condition "if (me32.th32ModuleID == dwModuleID)" il bloque, donc bFound=false et bien entendu, la fonction GetProcessModule retourne false. Quant aux autres fois, hModuleSnap vaut tout le temps 0xffffffff, ce qui implique que cette condition "if (hModuleSnap == (HANDLE)-1)" est vérifiée et que la fonction GetProcessModule revoie encore et toujours false. > > Pourquoi le code de MSDN ne marche-t-il pas? > Est-ce que la version du Windows peut être un facteur de ce problème? > Je travaille sous Windows XP. > > Merci de bien vouloir m'éclaicir! > > Xentor609 > > ------------------------------- > Réponse au message : > ------------------------------- > > > VOILA le MSDN: > > #include <windows.h> > > #include <tlhelp32.h> > > #include <stdio.h> > > > > BOOL GetProcessList () > > { > > HANDLE hProcessSnap = NULL; > > BOOL bRet = FALSE; > > PROCESSENTRY32 pe32 = {0}; > > > > // Take a snapshot of all processes in the system. > > > > hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); > > > > if (hProcessSnap == INVALID_HANDLE_VALUE) > > return (FALSE); > > > > // Fill in the size of the structure before using it. > > > > pe32.dwSize = sizeof(PROCESSENTRY32); > > > > // Walk the snapshot of the processes, and for each process, > > // display information. > > > > if (Process32First(hProcessSnap, &pe32)) > > { > > DWORD dwPriorityClass; > > BOOL bGotModule = FALSE; > > MODULEENTRY32 me32 = {0}; > > > > do > > { > > bGotModule = GetProcessModule(pe32.th32ProcessID, > > pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32)); > > > > if (bGotModule) > > { > > HANDLE hProcess; > > > > // Get the actual priority class. > > hProcess = OpenProcess (PROCESS_ALL_ACCESS, > > FALSE, pe32.th32ProcessID); > > dwPriorityClass = GetPriorityClass (hProcess); > > CloseHandle (hProcess); > > > > // Print the process's information. > > printf( "\nPriority Class Base\t%d\n", > > pe32.pcPriClassBase); > > printf( "PID\t\t\t%d\n", pe32.th32ProcessID); > > printf( "Thread Count\t\t%d\n", pe32.cntThreads); > > printf( "Module Name\t\t%s\n", me32.szModule); > > printf( "Full Path\t\t%s\n\n", me32.szExePath); > > } > > } > > while (Process32Next(hProcessSnap, &pe32)); > > bRet = TRUE; > > } > > else > > bRet = FALSE; // could not walk the list of processes > > > > // Do not forget to clean up the snapshot object. > > > > CloseHandle (hProcessSnap); > > return (bRet); > > } > > > > BruNews, ciao... > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > j'ai essayé mais ca ne donne rien > > > > > > > > > HMODULE hModule=(HMODULE)pe32.th32ParentProcessID; > > > szPath[256]=""; > > > GetModuleFileName(hModule,szPath,sizeof(szPath)); > > > |
> > > szPath est vide ! > > > > > > Où est le problème ? > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > fais un essai avec le membre th32ParentProcessID pour GetModuleFilename. > > > > BruNews, ciao... > > > > > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > voila, comment je recupere le filename de l'exe en memoire > > > > > > > > > > > > > > > ... > > > > > PROCESSENTRY32 pe32 = {0}; > > > > > ... > > > > > pe32.szExeFile //ici > > > > > ... > > > > > |
> > > > > > > > > > Le prob, comme je l'ai dit c'est qu'il ne me donne que le nom de l'exe et pas le chemin d'acces complet. > > > > > Comment faire? > > > > > > > > > > ------------------------------- > > > > > Réponse au message : > > > > > ------------------------------- > > > > > > > > > > > le nom du ficher en memoire qui tourne, tu l'as eu comment ? > > > > > > C'est au moment ou tu recup cela qu'il faut aussi soit le HMODULE, soit le processid ou un truc qui l'identifie de maniere unique. > > > > > > BruNews, ciao... > > > > > > > > > > > > > > > > > > ------------------------------- > > > > > > Réponse au message : > > > > > > ------------------------------- > > > > > > > > > > > > > salut! > > > > > > > Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution ! > > > > > > > Avec les process, je n'obtiens que le nom du fichier (par exemple, winlogon.exe). > > > > > > > J'ai déjà essayé avec GetModuleFileName, mais il faut le HMODULE correspondant. J'ai donc utilisé GetModuleHandle mais il faut le chemin d'accès au complet ! > > > > > > > > > > > > > > Quelqu'un pourrait m'aider? > > > > > > > > > > > > > > D'avance merci pour vos réponses ! > > > > > > > > > > > > > > Xentor609 > > > > > > > > > > > > > > > > > > > > >
|
|
mardi 8 juillet 2003 à 19:55:28 |
Re : Comment retrouver le path en ayant que le nom du fichier

BruNews
|
Il est sur ton mail. BruNews, ciao...
------------------------------- Réponse au message : -------------------------------
> salut! > Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution ! > Avec les process, je n'obtiens que le nom du fichier (par exemple, winlogon.exe). > J'ai déjà essayé avec GetModuleFileName, mais il faut le HMODULE correspondant. J'ai donc utilisé GetModuleHandle mais il faut le chemin d'accès au complet ! > > Quelqu'un pourrait m'aider? > > D'avance merci pour vos réponses ! > > Xentor609
|
|
Cette discussion est classée dans : fichier, path, retrouver
Répondre à ce message
Sujets en rapport avec ce message
Récupération du chemin d'un fichier dans le 'path' [ par BettaSplendens ]
Bonjour,j'ai 2 choses... d'un côté le chemin avec laquelle est lancée mon application, qui comporte "bien entendu" plusieurs répertoires.. désignons i
Fichier ini... retrouver toutes les clef d'une session [ par JackosKing ]
Bon voilà j'ai fait une recherche sur msdn et sur le frm pour le fichier ini, et il faut donc que j'utilise la fonction:GetPrivateProfileString, avec
recherche du path de l'os [ par Cameleon69 ]
Salut a tousJe cherche comment récupérer le path où se trouve l'os.Ayant un programme qui doit trouner sur plusieurs OS différents, je ne suis pas cer
Besoin d'aide [ par hydrosk8 ]
voila je dois faire un programme en C++ ki permet de creer sequentiellement un fichier "mesure" comportant pour chaque mesure: le nom de la mesure; la
Broken pipe et sockets [ par nono1307 ]
J'ai un petit problème :( Je dois faire un serveur HTTP en C avec les sockets. Ce serveur doit gérer l'envoie des images. Or, c'est à ce niveau qu'
Matez ça! :) [ par MaDC ]
J'ai un soucis avec mon appli MFC.Je voudrais ouvrir un document avec ça :void CCommandeRobotView::OnFileOpen() { CFileDialog fenetreDlg( true, NU
API Win32, problème de variable [ par bouba ]
Salut a tous, j'ai un blem de variable dans mon programme. Voici mon code source.LPSTR Path="";LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM
Verifier que le programme executé est au bon endrois [ par XKaliBur ]
Voila le bout de code suivant : /* Verification du bon fichier */ char copy[500]; char current_long_path[500]; char current_short_p
[MFC]Afficher correctement le contenu d'un fichier [ par BIG_BOSS_001 ]
Bonjour à tous, J'ai un problème minime mais génant. Voici mon code : void CMFCDlg::OnBnClickedOpen() { // TODO : ajoutez ici le code de votre g
Livres en rapport
|
Derniers Blogs
[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|