1


我想知道您是否可以将句柄转换为窗口“HWND”。我需要使用“FindWindow”方法调用“PostMessage”函数。

我目前必须采购

HANDLE mainProcess;
BOOL APIENTRY ATTACH_PROCESS(int ProcessID)
{

    mainProcess = OpenProcess(PROCESS_ALL_ACCESS, true, ProcessID);

    return TRUE;
}
BOOL APIENTRY SEND_INPUT(/*NOT USED FOR THIS SAMPLE*/ const char* String, bool Keydown)
{

    int ToDo = WM_KEYUP;
    if (Keydown)
        ToDo = WM_KEYDOWN;
    return PostMessage((HWND)mainProcess, ToDo, VK_TAB, NULL); 
}
4

2 回答 2

4

不可以。一个进程可以创建多个窗口。由于不存在一对一的映射,所以这样的函数没有意义。

另一方面,当然可以有一个函数返回由进程创建的窗口列表。

于 2012-05-03T18:13:56.553 回答
2

使用 mainProcess 句柄调用 GetProcessId() 以获取 ProcessID。

调用 EnumWindows()

对于每个窗口,调用 GetWindowThreadProcessId() 以获取与该窗口关联的进程的 ProcessId。

比较 ProcessID,如果它们匹配 - 你已经找到了你想要的 HWND。

这是一项有点昂贵的任务,因此最好预先找到您想要的 hwnd 并存储它。

于 2012-05-03T18:44:17.777 回答