搜索其他软件并嵌套到QT界面
QDir dir = qApp->applicationDirPath();
if (!dir.exists()) {
return;
}
QStringList filters;
filters << QString("*.exe");
dir.setFilter(QDir::Files | QDir::NoSymLinks); //设置类型过滤器,只为文件格式
dir.setNameFilters(filters); //设置文件名称过滤器,只为filters格式
int dirCount = dir.count();
if (dirCount <= 0) {
return;
}
QStringList stringList;
for (int i = 0; i < dirCount; i++)
{
QString filename = dir[i];
if (filename.left(filename.size()-4) == qApp->applicationDisplayName())
{
continue;
}
QProcess *p=new QProcess;
p->start(filename, QStringList(filename));
connect(this, &QMainWindow::destroyed, p, [=] {
p->close();
});
QThread::msleep(500);
WId wid = (WId)FindWindow(NULL, filename.left(filename.size() - 4).toStdWString().c_str());//软件标题
QWindow* m_window = QWindow::fromWinId(wid);
m_window->setFlags(m_window->flags() | Qt::CustomizeWindowHint | Qt::WindowTitleHint);
QWidget *m_widget;
m_widget = QWidget::createWindowContainer(m_window, ui.widget);
/*HWND mm = (HWND)wid;
SetWindowTextA(mm, (LPCSTR)filename.left(filename.size() - 4).toStdWString().c_str());*/
qDebug() << wid<< filename.left(filename.size() - 4);
l->addWidget(m_widget);
}
ui.widget->setLayout(l);