通过进程Id获取窗口句柄实例
时间: 2023-07-28 22:06:57 浏览: 151
通过窗口句柄取得进程ID.zip易语言项目例子源码下载
你可以使用Windows API函数`GetWindowThreadProcessId`和`EnumWindows`来实现。具体步骤如下:
1. 使用`GetWindowThreadProcessId`函数获取进程的主线程ID。
2. 使用`EnumWindows`函数枚举所有窗口。
3. 对于每个窗口,使用`GetWindowThreadProcessId`函数获取窗口所属进程的主线程ID。
4. 如果该窗口所属进程的主线程ID等于你要获取句柄的进程的主线程ID,则该窗口就是你要找的窗口。
5. 对于找到的窗口,可以使用`GetWindow`函数和`GetWindowText`函数获取窗口句柄和窗口标题。
下面是一个示例代码:
```c++
#include <Windows.h>
#include <iostream>
using namespace std;
DWORD GetWindowThreadProcessId(HWND hwnd, DWORD* processId)
{
DWORD threadId = GetWindowThreadProcessId(hwnd, processId);
return threadId;
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
DWORD processId = 0;
DWORD targetProcessId = (DWORD)lParam;
if (GetWindowThreadProcessId(hwnd, &processId) && processId == targetProcessId)
{
// 找到了窗口句柄
char title[1024];
GetWindowText(hwnd, title, 1024);
cout << "窗口句柄: " << hwnd << ", 标题: " << title << endl;
}
return TRUE;
}
int main()
{
DWORD processId = 1234; // 目标进程ID
EnumWindows(EnumWindowsProc, (LPARAM)processId);
return 0;
}
```
在上面的示例代码中,`GetWindowThreadProcessId`函数用于获取窗口所属进程的主线程ID,`EnumWindows`函数用于枚举所有窗口,`EnumWindowsProc`函数是一个回调函数,用于处理每个窗口。当找到目标进程的窗口时,就可以获取窗口句柄和窗口标题。
阅读全文