通过窗口句柄可以获取进程id嘛
时间: 2023-07-28 07:07:32 浏览: 48
可以的。在Windows平台下,您可以使用GetWindowThreadProcessId函数来获取窗口所属的进程ID。该函数的原型如下:
```
DWORD GetWindowThreadProcessId(HWND hWnd, LPDWORD lpdwProcessId);
```
其中,hWnd是窗口句柄,lpdwProcessId是一个指向DWORD类型的指针,用于存储获取到的进程ID。调用该函数后,如果成功获取到了进程ID,则返回线程ID;否则返回0。
以下是一个示例代码:
```cpp
#include <windows.h>
#include <iostream>
int main()
{
HWND hWnd = FindWindow(NULL, "窗口标题"); // 获取窗口句柄
if (hWnd == NULL)
{
std::cout << "未找到窗口" << std::endl;
return -1;
}
DWORD processId = 0;
DWORD threadId = GetWindowThreadProcessId(hWnd, &processId);
if (threadId == 0)
{
std::cout << "获取进程ID失败" << std::endl;
return -1;
}
std::cout << "进程ID为:" << processId << std::endl;
return 0;
}
```
注意:您需要在程序运行时,保证目标窗口已经打开并且它的标题与您指定的标题一致。