项目需要将一个外部软件嵌入自己编写的qt界面,类似于将外部程序当作自己软件的一个插件,以起到集成的目的。笔者这里用电脑自带的计算器为例。
传统做法:
1)首先打开需要的外部程序;
2)通过spy+获取的外部程序类名;
3)将类名当作函数FindWindow的第一个参数(字符串);
改进做法:
1)根据exe路径启动程序,并得到进程id号;
2)根据进程id号得到主窗口句柄:通常情况下一个进程内有多个窗口句柄,还需要从得到的N个句柄中找到主窗口句柄(下面会统一讲到);
3)将HWND转为WId,进而将外部程序嵌入QWindow、widget: