QT 嵌入第三方程序方法:
QProcess *Process = new QProcess(this); //Process必须为指针,不然对象销毁时第三方exe会被关闭
Process->start(“Everything\\Everything.exe"); //启动exe
if (Process->waitForStarted())
{
Sleep(2000);
WId wid = (WId)FindWindow(L"EVERYTHING", L"Everything"); 获取exe wid
if (wid)
{
QWindow *mapWindow = QWindow::fromWinId(wid); //转换为QWindow
QWidget *Widget = QWidget::createWindowContainer(mapWindow, this);//包含到QWidget
//可以对Widget进行布局操作
attachWindowThreadInput(wid); //获取鼠标键盘事件给第三方exe
}
}
//把当前程序的事件通过WId传递给第三方exe
void attachWindowThreadInput(WId remoteWindowId)
{
DWORD currentThreadId = GetCurrentThreadId();
DWORD remoteTh