打开外部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
        }  
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值