15,980
社区成员
发帖
与我相关
我的任务
分享
可以采用WM_COPYDATA消息来做自定义跨进程通信,并触发切换到当前进程的逻辑:
导出一个内部函数:
typedef void (WINAPI* PROCSWITCHTOTHISWINDOW)(HWND, BOOL);
激活和切换进程逻辑:
activateWindow();
setWindowState((windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
raise();//必须加,不然X11会不起作用
#ifdef Q_OS_WIN32
HWND hWnd = (HWND)winId();
PROCSWITCHTOTHISWINDOW SwitchToThisWindow = NULL;
HMODULE hUser32 = GetModuleHandle(TEXT("user32"));
SwitchToThisWindow = (PROCSWITCHTOTHISWINDOW)GetProcAddress(hUser32, "SwitchToThisWindow");
if (SwitchToThisWindow) {
SwitchToThisWindow(hWnd, TRUE);
}
#endif //Q_OS_WIN32