基于Qprocess和QWindow的QT外部进程启动及共享界面
Qprocess启动外部进程
QPocess简介
QT中的QProcess类用来启动一个外部进程序并与其进行通信。
代码及注意事项
#include <QProcess>
QProcess * myProcess = new QProcess(this);
QStringList arguments;
myProcess->start("C:/Windows/System32/notepad.exe");//目标进程的路径
myProcess->waitForFinished(2000);
QWindow调用进程画面
QWindow简介
代码及注意事项
WId wid = (WId)FindWindow(L"WindowsForms10.Window.8.app.0.141b42a_r7_ad1", L"XCOM V2.0");
QWindow * window = QWindow::fromWinId(wid);
if (window)
{
window->setFlags(window->flags() | Qt::CustomizeWindowHint | Qt::WindowTitleHint); //这边可以设置一下属性
QWidget * widget = QWidget::createWindowContainer(window, this, Qt::Widget);
ui->verticalLayout->addWidget(widget);
}
FindWindow()两个参数为顶级窗口的类名和窗口名称(标题)
在调用FindWindow函数的时候,应该第一个参数为空,第二个参数为窗口的标题名。classname是窗口在创建时的注册名称,不是源代码的类名,通常可以不指定,除非确切地知道。另外,vs自带一个spy++的工具,可以探查当前所有窗口的信息,包括注册类名。
VS工具寻找外部应用名称和基类
首先将目标窗口打开在电脑桌面。VS——工具——spy++——望远镜图标