bool setFocus()
{
HWND top = GetDesktopWindow();
DWORD PID;
HWND pHwnd = NULL;
while(1) {
pHwnd = FindWindowEx(top, pHwnd, L"Qt5QWindowIcon", NULL);
if(!pHwnd) {
DEBUG() << "窗口遍历完毕!";
break;
}
GetWindowThreadProcessId(pHwnd, &PID);
//获取*.exe进程信息
QString cmd="tasklist";
QStringList args;
args<<"/FI"<<"IMAGENAME eq GsdAtFrame.exe";
args<<"/FO"<<"CSV"; //CSV格式显示
args<<"/NH"; //不显示标题栏
QProcess *process = new QProcess;
process->start(cmd,args);
process->waitForStarted();
process->waitForFinished();
QString data = process->readAll();
process->close();
//获取进程PID
QStringList temp = data.split(",");
uint pid = temp[1].remove("\"").toInt(); //移除:",得到:PID
if(PID == pid) {
AttachThreadInput(GetWindowThreadProcessId(::GetForegroundWindow(),NULL), GetCurrentThreadId(),TRUE);
SetForegroundWindow(pHwnd);
SetFocus(pHwnd);
AttachThreadInput(GetWindowThreadProcessId(::GetForegroundWindow(),NULL), GetCurrentThreadId(),FALSE);
DEBUG() << "设置窗口焦点成功";
return true;
}
}
DEBUG() << "设置窗口焦点失败";
return false;
}