当前位置:首页 » 《休闲阅读》 » 正文

Qt调用外部exe并嵌入到Qt界面中(验证成功)

0 人参与  2024年09月09日 08:41  分类 : 《休闲阅读》  评论

点击全文阅读


        本文章主要介绍如何用Qt调用其他应用的exe,并将窗口嵌入到Qt界面中。很多人查到的代码都能成功的将exe调用起来,但是嵌入不到窗口中。主要有两种原因,现在从头到尾的梳理一下。 

1.主要代码

1.1启动exe

//包含头文件#include <QProcess>//启动软件QProcess *m_process = new QProcess;m_process->start("./test.exe");/此处参数写exe路径。启动后可适当的加点延时,等待exe完全启动//或者调用m_process->waitForFinished(1000)等待程序执行完成

1.2获取exe窗口句柄,嵌入到主界面 

WId m_wid = (WId)FindWindow(L"xxx",L"xxx");//第一个参数xxx为调用的exe的类名;第二个xxx参数为调用的exe的标题名。QWindow *M_WINDOW = QWindow::fromWinId(m_wid);M_WINDOW->setFlags(M_WINDOW->flags() | Qt::CustomizeWindowHint | Qt::WindowTitleHint);QWidget *childWidget =QWidget::createWindowContainer(M_WINDOW,this);//创建新的widgetui->horizontalLayout->addWidget(childWidget);//将widget窗口加入到主界面布局中childWidget->show();

        至此,代码部分已经完成了,但会有很多人会出现exe调用成功了,但是没有嵌入到Qt窗口中的现象。下面说一下解决此问题的办法,主要有两个原因。 

2. 未成功嵌入原因1

        启动exe程序在构造Qt主窗口界面之后,导致Qt没有找到外部exe句柄。

        解决办法: 将启动exe代码放在main函数构造主窗口类之前。具体如下:

int main(int argc, char *argv[]){    QApplication a(argc, argv);    QProcess *m_process = new QProcess;    m_process->start("./test.exe");    MainWindow w;    w.show();    return a.exec();}

3.未成功嵌入原因2

        此步是嵌入成功与否的关键,也是大部分人未能成功嵌入的原因,就是获取窗口句柄时传的exe类名或者标题名称不对。尤其是类名,有的类名和我们自定义的类名或和我们理解的类名有很大出入。下面介绍一下如何准确的获取类名。

        利用spy++工具获取。具体步骤如下:

        1.打开VS,点击工具一栏。

                

        2.点击Spy++,弹出窗口,点击查找窗口,即图中的小望远镜。

        3.然后拖动类似光盘的图标到你想启动的外部exe窗口中,即可获取类名和标题名。 (以新建txt为例)

        保证以上两点,在运行程序就可以成功的嵌入到自己 的Qt窗口啦!!!!! 


点击全文阅读


本文链接:http://zhangshiyu.com/post/157172.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 癌症晚期,高冷老婆疯狂报复我:结局+番外(沈云汐傅南琛)免费在线_癌症晚期,高冷老婆疯狂报复我:结局+番外全文后续(沈云汐傅南琛)
  • 星河入我梦后续全文免费阅读_[林清野全校师生荣誉]独家章节限时试读
  • 付雪砚谢南昱(仲夏飘雪爱茫茫:结局+番外)_(付雪砚谢南昱)列表_笔趣阁(仲夏飘雪爱茫茫:结局+番外)
  • 苏辰唐依晨正版_苏辰唐依晨正版
  • (番外)+(全书)爱你不过寥寥:结局+番外(秦宴)_(爱你不过寥寥:结局+番外)列表_笔趣阁(秦宴)
  • [爱别离苦,余生梦长]完结_[周凌萱陆今安]情感冲突精选段落
  • 全书浏览烟火照夜白:++番外(温南枝沈清宴)_烟火照夜白:++番外(温南枝沈清宴)全书结局
  • (林书意陆沉微风轻拂又见你:结局+番外)(林书意陆沉)_林书意陆沉微风轻拂又见你:结局+番外列表_笔趣阁林书意陆沉
  • (番外)+(全书)贺砚时夏知微(被全网嘲后,我逆风翻盘:结局+番外)全书在线_贺砚时夏知微免费列表_笔趣阁(被全网嘲后,我逆风翻盘:结局+番外)
  • 拿我换城池,我走了将军哭什么?小说精彩节选免费试读_「云昭谢景墨」删减内容修复版本
  • (番外)+(全书)(林书意陆沉)_林书意陆沉列表_笔趣阁(林书意陆沉)(林书意陆沉)完结_(林书意陆沉)列表_笔趣阁(林书意陆沉)
  • 陆沉林书意全+(林书意陆沉:微风轻拂又见你:结局+番外)_陆沉林书意后续

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1