您的当前位置:首页正文

Qt程序嵌入其他程序

2024-11-08 来源:个人技术集锦

最近写各小工具,需要嵌入他人的程序,所以记录一下使用方式:

void createFrame::on_pushButton_6_clicked() {
  removeLayout(ui->widget, ui->widget->layout());

  d698_exe = QCoreApplication::applicationDirPath() +
             QString("/App/TopsParser/TopsParser.exe");
  isStopFind = true;
  procThreExec.start(d698_exe);
  QTimer::singleShot(6000, this, &createFrame::stopFindWindow/* 可以用lamba语句 这里就是将标志位 isStopFind == false */);
  while (isStopFind) {
    wid645 =
        (WId)FindWindow(L"TMainFrm", L"通讯报文解析工具__V1.0.2.1_141215");
    if (wid645 == 0) {
      continue;
    }
    break;
  }

  if (isStopFind == false)
    return;

  mWin = QWindow::fromWinId(wid645);
  mWin->setFlags(mWin->flags() | Qt::CustomizeWindowHint | Qt::WindowTitleHint);

  mWidget = QWidget::createWindowContainer(mWin);
  /* resize大小控制 */
  resize(1333, 768);
  hLayout = new QHBoxLayout();
  pl645_3762 = new proc645_3762();
  pl645_3762->setWidget(mWidget);
  hLayout->addWidget(pl645_3762);
  ui->widget->setLayout(hLayout);
  ui->widget->show();
}

代码主要实现:

 1. QProcess 启动第三方exe

 2. 循环查找 目标exe的标题(这个需要用到spyxx_amd64.exe)

 3. 根据找到的句柄创建Qt窗口

 4. 将创建好的串口布局嵌入我们的Qt窗口之中.

 收工完事了.

个人技术集锦还为您提供以下相关内容希望对您有帮助:

Qt中嵌入web网页的几种实现方式

嵌入Chrome.exe进程实现此方法启动本地Chrome浏览器,实现与本地浏览器功能等同。通过启动浏览器进程并传入参数,再获取窗口句柄,实现嵌入。环境配置:Qt5.9.6 + VS2015检测Chrome安装情况,获取Chrome.exe路径。开发流程:启动Chrome.exe,获取窗口句柄,转化为QWindow,嵌入界面。总结:功能完整,但浏览器...

QT怎么把别的exe程序嵌入到自己的窗口中

pProcess->start();qint64 lID = pProcess->processId();QWindow* window = QWindow::fromWinId(lID);QWidget* widget = QWidget::createWindowContainer(window, this, Qt::Widget);widget->show();我自己写的一段代码,

嵌入式qt跑多个应用

1、首先,开发多个Qt应用程序,每个应用程序都有独立的UI界面和业务逻辑。2、在系统启动时,启动器程序会运行,启动器程序是一个Qt应用程序,它的主要功能是控制其他应用程序的启动和关闭。3、启动器程序需要在主窗口中显示多个按钮或菜单项,每个按钮或菜单项代表一个应用程序。4、当用户点击一个按钮或...

嵌入式Qt-动手编写并运行自己的第1个ARM-Qt程序

嵌入式Qt开发的第一步:亲手创建并运行ARM-Qt程序 上一章节已经介绍了在Linux开发板上安装并测试Qt环境,现在我们将步入实际编程阶段。Qt的跨平台特性让我们先在Windows上编写并预览程序,然后通过交叉编译技术,生成适用于ARM Linux的可执行文件。首先,Windows环境下,安装Qt Creator用于开发。这个过程与...

QT创建的UI连接另外一个程序

可以在设计器中拖拽控件到界面中连接。QT中有一个集成界面设计器,可以将设计器中的控件拖拽到界面中进行UI连接到另外一个程序界面。UI连接是一种结对编程处理器。

qt中如何运行外部程序,QProcess类

QT中使用QProcess启用外部程序启用外部程序,并可传参,默认第一个参数是exe路径!启动外部程序的方法有以下两种:1、start()void QProcess::start ( const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite )Starts the program program in a new process, passing the...

有了electron为什么还需要qt嵌入cef

原因如下:1、跨平台,Electron虽然能让我们使用HTML、CSS和JavaScript来构建跨平台的桌面应用程序,但是本身并不能解决所有的跨平台问题,而Qt嵌入CEF后可以作为一个Web浏览器核心能够渲染Web页面,并且能利用CEF的跨平台特性,解决更多的跨平台问题。2、性能,虽然Electron在某些方面做得很好,但是性能仍然不...

QT Creator配置嵌入式Linux交叉编译环境

配置QT Creator QT Creator是用于QT程序开发的IDE。若未安装,可通过相应途径获取。配置编译器时,打开QT Creator,选择“工具”->“选项”,在“编译器”一栏中添加GCC和G++编译器路径,指定名称。接着,配置交叉编译用的QT版本,通过添加qmake路径到“QT Versions”中。最后,配置Kits,设置编译器和QT...

帮忙吧这个代码写出。

为了实现在qt程序中打开Window上其他应用程序,并将其嵌入到qt程序中。方法:获取外部程序的窗口句柄,调用 [static]QWindow *QWindow::fromWinId(WIdid)函数创建QWindow,然后调用 [static]QWidget *QWidget::createWindowContainer(QWindow *window,QWidget *parent = Q_NULLPTR,Qt::WindowFlagsflags ...

Qt与Web混合开发

Quick WebGL Stream是一种通信技术,通过将QtQuick程序中的渲染指令和数据,通过socket传输给Web端,由WebGL实现界面渲染。使用方式简单,无需修改源码,仅需在程序启动时指定端口号,即可将Qt程序转变为一个运行于后端的服务器,通过浏览器访问本地或内网地址查看程序页面。此技术在某些工业监控场景中应用...

Top