|
个人在实战中对一些窗口进行过投递测试,在精易模块中代码大概长这样
void 文本投递(HWND hwnd, std::string sendStr)
{
SetForegroundWindow(hwnd);
for (int n = 0; n < sendStr.length(); n++)
{
PostMessageA(hwnd, WM_CHAR, sendStr[n], 0);
}
}
这样只调用了一次SetForegroundWindow函数,有的时候会出现无法起到将窗口激活的效果,个人改进建议如下
void 文本投递(HWND hwnd, std::string sendStr)
{
DWORD StartTime = GetTickCount();
while (GetTickCount() < StartTime + 1000) //这个数值有待斟酌
{
SetForegroundWindow(hwnd);
}
for (int n = 0; n < sendStr.length(); n++)
{
PostMessageA(hwnd, WM_CHAR, sendStr[n], 0);
}
}
这样能兼容更复杂的情况。
|
|