我花了3天时间讨论这个话题。我发现的所有结果都使用“SetForeground”,然后使用SendMessage或一些API(keybd_event,kennedy(opensource)等)。当然,SendKeys不会将密钥发送到指定的进程,我想将密钥发送到我知道PID或HWND的指定进程。
我对它没有任何想法,是否可能? 如果没有,我宁愿用我无意的SetForeground实现。
有什么想法吗?
答案 0 :(得分:1)
我刚刚找到了解决方案。
我不知道标签概念。关键点是标签处理,是键处理的真正手柄。如果我使用主窗口句柄,它可以处理 WM_CLOSE WM_SETTEXT (也 SetWindowText(字符串))但不能 WM_KEYDOWN 。我想象了这个序列。
所以我必须先找到标签句柄。
int getTabHandle() {
int hwnd = 0;
hwnd = FindWindowEx(hwnd , 0, "iexplore.exe", null);
hwnd = FindWindowEx(hwnd , 0, "IEFrame", null);
hwnd = FindWindowEx(hwnd , 0, "Frame Tab", null);
hwnd = FindWindowEx(hwnd , 0, "TabWindowClass", null);
hwnd = FindWindowEx(hwnd , 0, "Shell DocObject View", null);
hwnd = FindWindowEx(hwnd , 0, "Internet Explorer_Server", null);
return hwnd;
}
有了这个hwnd,我可以无需关注发送密钥。感谢。