有人可以說我是否正確使用它?GetProcessImageFileName和LPTSTR
LPTSTR nameProc = "";
...
GetProcessImageFileName(hProcess, nameProc, 50);
printf("name process : %s\n", nameProc);
我不使用Win32類型一起使用, 的GetProcessImageFileName的第二參數需要一個LPTSTR的typedef和第三個需要DWORD變量。 如果不是該方法可能我不打印的值nameProc正確的方法? (順便打印一個空字符串)
在此先感謝。 (請儘量避免將我引向某些win32 api文檔,我無意瞭解它,我只需要追蹤一個進程的使用記憶,因此我不會再處理win類型)
EDIT(更新代碼):
void printMemoryInfo(DWORD processID) {
HANDLE hProcess;
TCHAR nameProc[MAX_PATH];
printf("\nProcess ID: %u\n", processID);
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID);
if (hProcess == NULL) return;
if (GetProcessImageFileName(hProcess, nameProc, sizeof(nameProc)/sizeof(*nameProc))==0)
printf("error\n");
else printf("%s\n", nameProc);
}
int main (void) {
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded)) {
return 1;
}
cProcesses = cbNeeded/sizeof(DWORD);
for (i=0; i < cProcesses; i++) {
printMemoryInfo(aProcesses[i]);
}
return 0;
}
謝謝,它適用於某些進程標識符。 它似乎並不想打印執行此程序的進程的文件名(但實際上processId位於使用enumProcesses初始化的列表中)。任何想法爲什麼? – user544262772 2012-02-26 00:17:15
你能否更新你的文章以包含枚舉過程的代碼。 – spencercw 2012-02-26 00:19:53
我寫了整個代碼 – user544262772 2012-02-26 00:33:08