QProcess 调用外部exe程序内嵌失败
问题:外部exe程序已经启动,但无法内嵌进qt框架
解决办法:如果该外部程序只用调用一次,可以参考之前的方法,将启动和调用分开写Qt 内嵌外部exe程序 利用Windows API(1)
外部程序启动后无法内嵌,即抓不到句柄的原因,其实是,外部程序的启动需要时间。
虽然代码中可能先写了qprocess->start,然后再用的findwindow抓句柄,但是可能外部程序还没完全启动,就执行了抓句柄语句,所以才会抓不到。
这也是为什么前面那种写在main函数里就可以的原因(外部程序的启动和抓取,有充足的时间间隙)
所以解决上述问题,只需要在抓取前,加上QThread::msleep()语句。具体时间需要多尝试,可能与程序本身有关,我这里用300就行。
Qproess *myprocess =new Qprocess()