找回密码
 立即注册
收起左侧

Qt中调用外部软件并嵌入到主窗口中

9
回复
19896
查看
[复制链接]
累计签到:16 天
连续签到:1 天
来源: 2014-4-16 09:13:22 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1.QAxWidget加载外部软件的话必须用到UUID,有的自己安装的软件在注册表中找不到软件祖册ID怎么办
2.或者用QProcess::start()  打开外部软件后,不能嵌入到主窗口中。
回复

使用道具 举报

累计签到:16 天
连续签到:1 天
2014-5-12 15:46:40 显示全部楼层
忙了好久,这个问题终于解决了,利用VC方法解决的
回复 支持 反对

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-5-12 16:11:55 显示全部楼层
jxd9955 发表于 2014-5-12 15:46
忙了好久,这个问题终于解决了,利用VC方法解决的

打开外部exe 嵌入到自己的widget中,怎么解决的?
回复 支持 反对

使用道具 举报

累计签到:894 天
连续签到:1 天
2014-5-14 07:43:38 显示全部楼层
jxd9955 发表于 2014-5-12 15:46
忙了好久,这个问题终于解决了,利用VC方法解决的

楼主把解决方案贴出来吧,或者写个教程,我帮顶。
回复 支持 反对

使用道具 举报

累计签到:16 天
连续签到:1 天
2014-8-1 14:35:59 显示全部楼层
好吧,现在程序找不见了,当时写了一个测试例子,不成功的话在问我,实现方法是根据可执行窗口的名字抓取可执行程序。
我把主要步骤写一下:
1.启动要嵌入的可执行程序:(1)使用system函数启动
                                       (2)或者使用QProcess启动
2.添加windows.h头文件
            QString Name = "note";      //可执行程序左上角的名字
                do{
                        HWND   SimpackWnd = FindWindow(NULL,(LPCTSTR)Name.unicode());
                        Sleep(150);
                }while(SimpackWnd==NULL);

           SetParent(SimpackWnd,(HWND)(softShow->winId()));   //添加到父窗口中

            这里主要用到两个函数FindWindow和SetParent
这样就可以了。如果有兴趣的话,可以研究QAxWidget 这个类,他也可以实现。
回复 支持 反对

使用道具 举报

累计签到:16 天
连续签到:1 天
2014-8-1 14:37:08 显示全部楼层
a408815041 发表于 2014-5-12 16:11
打开外部exe 嵌入到自己的widget中,怎么解决的?

你可下按照下面的方法试下,有问题再联系我
回复 支持 反对

使用道具 举报

累计签到:11 天
连续签到:1 天
2014-8-4 16:20:11 显示全部楼层
请问一下arm板上想把外部程序嵌入需要怎样做呢?谢谢
回复 支持 反对

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-8-5 10:05:33 显示全部楼层
你好~我测试了一下你说的这个方法,可以。
但是怎么把嵌套的这个界面显示出来,比如我打开了一个记事本,记事本现在嵌套进来了,但是界面上也没有记事本,怎么把记事本显示出来。。
回复 支持 反对

使用道具 举报

累计签到:16 天
连续签到:1 天
2014-8-5 14:08:19 显示全部楼层
a408815041 发表于 2014-8-5 10:05
你好~我测试了一下你说的这个方法,可以。
但是怎么把嵌套的这个界面显示出来,比如我打开了一个记事本,记 ...

界面继承QMainWindow  试下
回复 支持 反对

使用道具 举报

尚未签到

2015-5-22 11:58:10 显示全部楼层
您好 我按照这个方法测试了下 可是不行啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了