1、采用Windows指令
//设置操作指令
std::wstring operate = QString("runas").toStdWString();
//设置EXE路径
std::wstring path = QCoreApplication::applicationDirPath().toStdWString();
//设置EXE
std::wstring fileName = QString(QCoreApplication::applicationDirPath() + "/app.exe").toStdWString();
//使用ShellExecute命令打开程序
int ret = (int)ShellExecute(NULL, operate.c_str(), fileName.c_str(), NULL, path.c_str(), SW_SHOWNORMAL);
2、采用QT启动---在Windows下很多电脑的环境缺少库、或者驱动导致Windows ShellExecute指令失败
(1)、此种方法QT给我们屏蔽了环境的差异,此方法能直接启动app.exe程序,
QProcess::startDetached(QCoreApplication::applicationDirPath() + QDir::separator() + "app.exe", QStringList());
但是有些程序需要在Main函数传递参数应该怎么办呢?
第二个QStringList能完美的解决这个问题
(2)、参数传递---为了判断是手动点开的EXE 还是其他程序调用的,或者其他特殊命令
QStringList list;
list.push_back("msg1");//这里可以传递参数
list.push_back("command");
QProcess::startDetached(QCoreApplication::applicationDirPath() + QDir::separator() + "app.exe", list);
在app.exe Main函数中我们需要处理这些命令
int main(int argc, char *argv[])
{
for (i = 0; i < argc; i++)
{
QString qsCommad = QString(QLatin1String(argv[i]));
if(qsCommad == "msg1")
{
//do something
}
else if(qsCommand == "command")
{
//do someting
}
}
}