win32 - 基於hwnd獲取進程名字(GetModuleFileNameEx)


#include <Windows.h>
#include <psapi.h>

int main()
{
    DWORD process_ID = 0;
    WCHAR process_name[MAX_PATH] = {};
    HWND notepad = FindWindow(NULL, L"print.txt - Notepad"); 

    BOOL ERR = GetWindowThreadProcessId(notepad, &process_ID);
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, process_ID);
    GetModuleFileNameExW(hProcess, 0, process_name, MAX_PATH);

    return 0;
}

有了HANDLE,您可以使用GetModuleFileNameEx()GetProcessImageFileName()(XP +)或QueryFullProcessImageName()(Vista +)來獲取該進程的EXE文件的完整路徑和文件名:

WCHAR process_name[MAX_PATH] = {};
if (GetProcessImageFileNameW(hProcess, process_name, MAX_PATH))
{
    // use process_name as needed...
}
else
{
    // error handling ...
}
WCHAR process_name[MAX_PATH] = {};
DWORD size = MAX_PATH;
if (QueryFullProcessImageNameW(hProcess, 0, process_name, &size))
{
    // use process_name as needed...
}
else
{
    // error handling ...
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM