Qt 界面置于指定程序最前

/*
windows头文件
#include <Windows.h>
#include <tlhelp32.h>
*/
QTimer *t = new QTimer();
connect(t, &QTimer::timeout, [&]() {
    HWND hWnd = ::GetLastActivePopup(::GetForegroundWindow());  // 获得顶层窗口句柄
    DWORD dwPID;
    GetWindowThreadProcessId(hWnd, &dwPID); // 获得句柄的PID
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); // 获得系统进程快照句柄
    PROCESSENTRY32 pe = { sizeof(pe) };
    for (BOOL ret = Process32First(hSnapshot, &pe); ret; ret = Process32Next(hSnapshot, &pe)) { // 遍历 进程
        if (pe.th32ProcessID == dwPID && "notepad.exe" == QString::fromWCharArray(pe.szExeFile)) {  // 先判断PID 再判断 进程名称
            LD << "notepad.exe 在最顶层 激活本程序";
            activateWindow();   // 激活程序到最前
            break;
        }
    }
    CloseHandle(hSnapshot); // 记得关掉快照句柄
});
t->start(100);

本文作者:vanxkr

本文链接:http://www.vanxkr.com/2022/3/Qt-top-window

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0许可协议。转载请注明出处!

Qt操作Excel(其他Office同理)
0 条评论
已登录,注销 取消