我想使用pid获取该过程的完整路径。
#include <psapi.h>
HANDLE processHandle = NULL;
TCHAR filename[MAX_PATH];
processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, nPID);
if (processHandle != NULL)
{
if (GetModuleFileNameEx(processHandle, NULL, filename, MAX_PATH) == 0)
{
//fail to get module file name
}
else
{
//module file name : filename
}
CloseHandle(processHandle);
}
else
{
//fail to open process
}
这是使用PID获取过程路径的代码。
但是,当我执行它时,会发生以下错误。
(我正在使用Visual C 6.0。(
Linking...
Process01Dlg.obj : error LNK2001: unresolved external symbol _GetModuleFileNameExA@16
Debug/Process01.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
- queryfullprocessimagename
- getModuleFilename
- getModuleFilenameEx
- getProcessimageFilename
上述所有方法都导致错误。
这是版本的问题吗?
请回答。谢谢:(
看来您忘记了将产品与psapi.lib
联系起来。将其添加到项目依赖项中。
不确定它是否在VC6.0中起作用。
但是,MSDN推荐其他功能以检索过程名称:
要检索远程过程的主可执行模块的名称,请使用 getProcessimageFileName 或 QUERYFULLPROPROCESSIMAGENAME 函数。这比调用Null Module句柄
来调用 getModuleFileNameEx 功能更高效,更可靠。