gpt4 book ai didi

c++ - GetProcessImageFileName 和 LPTSTR

转载 作者:太空宇宙 更新时间:2023-11-04 15:07:59 26 4
gpt4 key购买 nike

有人能说我用对了吗?

LPTSTR nameProc = "";
...
GetProcessImageFileName( hProcess, nameProc, 50 );

printf("name process : %s\n", nameProc);

我不习惯 win32 类型,GetProcessImageFileName 的第二个参数需要一个 LPTSTR typedef,第三个参数需要一个 DWORD 变量。如果不是方法,也许我没有以正确的方式打印 nameProc 的值? (顺便打印一个空字符串)

提前致谢。

(请尽量避免带我去看一些win32 api文档,我无意去了解它,我只是想跟踪一个进程的使用内存,所以我不再处理win类型)

编辑(更新代码):

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;
}

最佳答案

nameProc 需要是一个可变缓冲区,因为它是一个输出参数,目前它可能会崩溃。改变这个:

LPTSTR nameProc = "";

为此:

TCHAR nameProc[MAX_PATH];

同时传递 MAX_PATH,此时您正在传递 50。

关于c++ - GetProcessImageFileName 和 LPTSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9449270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com