QT激活其他程序窗口,也是用的windows的API,在知道其他窗口名称的情况下(窗口已打开),利用FindWindow找到对应窗口句柄HWND,判断句柄是否为空。
利用ShowWindow显示出找到的窗口,利用SetForegroundWindow激活窗口,将焦点设置为激活的窗口。
代码如下:
void MainWindow::ActivateWindow(QString prowindow) //传入参数为窗口名称prowindow
{
HWND hwnd = FindWindow(NULL,(LPCWSTR)prowindow.unicode()); //将窗口名称prowindow转换格式,传入FindWindow函数,系统找到并输出prowindow窗口对应的句柄至hwnd。
if(::IsWindow(hwnd)) //判断句柄是存在且有效
{
ShowWindow(hwnd,SW_RESTORE); //SW_RESTORE参数是以窗口上次打开方式显示,SW_SHOWNORMAL是正常显示窗口,还有hide、min、max等隐藏、最大最小化形式显示。
SetForegroundWindow(hwnd); //激活窗口,并设置焦点至该窗口
}
}
该函数可用于QT程序激活其他应用程序或者调用已打开的最小化程序,也可用于变更其他程序的显示方式,ShowWindow的第二个参数。其他程序必须打开且在系统下方任务栏显示图标的情况下函数有效。
该函数主要利用Windows系统底层API,其他C++语言都可通用,只需变更传入的字符串格式即可。