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
[WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF![WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF! par JeremyJeanson
Le code suivant est destiné à répondre à une problématique courante en Workflow : Vous avez une activité dont le designer est complexe ou dont l'affichage prend une place importante à l'écran et la possibilité Collapse/Expand ne répond pas pleinement à vo...
Cliquez pour lire la suite de l'article par JeremyJeanson [SHAREPOINT 2010] CRéER ET PACKAGER UNE APPLICATION SILVERLIGHT POUR SHAREPOINT 2010[SHAREPOINT 2010] CRéER ET PACKAGER UNE APPLICATION SILVERLIGHT POUR SHAREPOINT 2010 par neodante
L'intégration native de Silverlight dans SharePoint 2010 représente une avancée majeure dans la conception des applications sur la plateforme SharePoint. Et pour cause, Silverlight repousse les limites du Web de SharePoint en offrant une expérience plus r...
Cliquez pour lire la suite de l'article par neodante [MIX10] KEYNOTE PREMIèRE JOURNéE - WINDOWS PHONE 7 ET SILVERLIGHT 4[MIX10] KEYNOTE PREMIèRE JOURNéE - WINDOWS PHONE 7 ET SILVERLIGHT 4 par cyril
Comme l'année dernière, me revoici à Las Vegas pour Mix10. Ce matin a eu lieu le premier keynote animé par Scott Guthrie. Le keynote s'est déroulé en 2 parties : Silverlight 4.0 et Windows Phone 7 Silverlight 4.0 Le taux de pénétration de Silverli...
Cliquez pour lire la suite de l'article par cyril [MIX10] RELEASE CANDIDATE DE SILVERLIGHT 4 ET RIA SERVICES[MIX10] RELEASE CANDIDATE DE SILVERLIGHT 4 ET RIA SERVICES par Audrey
C'est enfin officiel, grâce au MIX 2010, les Release Candidate de Silverlight 4 et de RIA Services sont sorties ! Pour les télécharger, voici les liens : Silverlight 4 RC : http://silverlight.net/getstarted/silverlight-4/ RIA Services RC : http://www.micr...
Cliquez pour lire la suite de l'article par Audrey PREMIERES IMPRESSIONS SUR WINDOWS PHONE 7PREMIERES IMPRESSIONS SUR WINDOWS PHONE 7 par odewit
Il est toujours passionnant de decouvrir une nouvelle plate-forme. C'est bien entendu le cas pour Windows Phone 7. Mais au-dela de la passion technique, j'ai le sentiment qu'il s'agit d'un coup de maitre en termes d'ergonomie (tres fluide et epuree) e...
Cliquez pour lire la suite de l'article par odewit
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|