打开外部EXE程序,并且出传递参数

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
        }  
    }
}

 

你可能感兴趣的:(小tips)