Qt调用win32 API 把第三方工具的窗口设置为最顶层

该博客介绍了如何在Qt应用中通过调用Win32API,将第三方工具的窗口置顶。首先,需要在工程中添加Win32库,然后定义一个枚举窗口的回调函数来查找特定窗口。在主函数中,利用QProcess启动进程并等待,一旦找到目标窗口,就使用SetWindowPos将其设置为最顶层。这个方法对于需要确保特定窗口始终在前的应用场景非常有用。

Qt调用win32 API 把第三方工具的窗口设置为最顶层

  • 添加win32静态库
    在工程目录添加
LIBS += User32.LIB
LIBS += Gdi32.LIB
  • 添加头文件
#include <windows.h>
#include <conio.h>
  • 查找成功与否的标志
bool bFinishShow;	//全局变量
  • 检测所有窗口的函数
BOOL MyEnumProc(HWND hwnd, LPARAM param)
{
    LPWSTR lpString = (LPWSTR)malloc(sizeof(WCHAR) * MAX_PATH);

    if (IsWindow(hwnd) &&IsWindowEnabled(hwnd) &&IsWindowVisible(hwnd))
    {
        if (GetWindowTextW(hwnd, lpString, MAX_PATH) > 0) {
            if(QString::fromStdWString(lpString) == "test.exe"){		//例如要找的窗口名称是‘test.exe’
                bFinishShow = true;
            }
        }
    }
    free(lpString);
    return TRUE;

}
  • 主函数,QProcess打开并且检测是否已经显示出来,显示出来则设置最顶层
bool Test::startTest(){
	QProcess process= new QProcess();
	bFinishShow = false;
    QString sCommand = QString("%1/test/test.exe").arg(QCoreApplication::applicationDirPath());
    process->start(sCommand);
    process->waitForStarted();
    while(EnumWindows(MyEnumProc, 0) && (!bFinishShow));
    HWND hwnds = FindWindowA(NULL,"test.exe");
    ShowWindow(hwnds,SW_SHOWNORMAL);
    SetWindowPos(
            hwnds,
            HWND_TOPMOST,
            0,
            0,
            0,
            0,
            SWP_NOMOVE|SWP_NOSIZE
        );
    return true;
}

以上步骤即可实现设置第三方工具界面最上层。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值