Я хочу использовать 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.
Все вышеперечисленные методы вызвали ошибку.
Это проблема с версией?
Ответьте, пожалуйста. Спасибо 🙂
Кажется, вы забыли связать свой продукт с psapi.lib
, Добавьте его в зависимости проекта.
Не уверен, что это будет работать в VC6.0.
Однако MSDN рекомендует использовать другие функции для получения имен процессов:
Чтобы получить имя основного исполняемого модуля для удаленного процесса, используйте GetProcessImageFileName или же QueryFullProcessImageName функция. Это более эффективно и надежно, чем вызов GetModuleFileNameEx функция с дескриптором модуля NULL.
Других решений пока нет …