如何使用GetWindowThreadProcessId函数获取程序的进程ID,使用c++
时间: 2023-02-09 08:46:23 浏览: 291
使用GetWindowThreadProcessId函数获取程序的进程ID需要在程序中包含windows.h头文件,并使用下面的代码:
DWORD processID;
GetWindowThreadProcessId(hwnd, &processID);
其中hwnd是窗口句柄,processID是输出参数,用于存储进程ID。
示例代码如下:
```c
#include <windows.h>
int main(){
HWND hwnd = FindWindow(NULL, "窗口标题");
if (hwnd == NULL) {
printf("窗口没有找到");
return 1;
}
DWORD processID;
GetWindowThreadProcessId(hwnd, &processID);
printf("进程ID是: %d\n", processID);
return 0;
}
```
需要注意的是:FindWindow函数需要知道窗口的标题。可以用spy++获取窗口句柄。
相关问题
通过窗口句柄获取程序路径位置
可以通过以下代码获取程序窗口所属的可执行文件的路径:
```c++
HWND hWnd = FindWindow(NULL, "窗口标题"); // 根据窗口标题获取窗口句柄
if (hWnd != NULL)
{
DWORD processId;
GetWindowThreadProcessId(hWnd, &processId);
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processId);
if (hProcess != NULL)
{
TCHAR szExePath[MAX_PATH];
if (GetModuleFileNameEx(hProcess, NULL, szExePath, MAX_PATH))
{
// szExePath 就是程序的可执行文件路径
}
CloseHandle(hProcess);
}
}
```
其中,FindWindow 函数用来根据窗口标题获取窗口句柄,GetWindowThreadProcessId 函数用来获取窗口所属的进程 ID,OpenProcess 函数用来打开进程句柄,GetModuleFileNameEx 函数用来获取程序的可执行文件路径。注意,需要在编译时链接 psapi.lib 库才能使用 GetModuleFileNameEx 函数。
阅读全文