QProcess无法传递参数

QProcess fails to pass the arguments

本文关键字:参数 QProcess      更新时间:2023-10-16

我想制作一个小型的Qt应用程序,以便能够使用-login-login-passsword作为启动选项在steam帐户之间快速切换。问题是,我无法使用带有所需参数的Qt应用程序运行steam.exe。这是一个代码:

QString path("C:\Program Files (x86)\Steam");
QStringList arg;
arg << "-launch 123 123";
QString item = arg.takeAt(0);
QString res("Steam.exe");
QString program = """ + path + "/" + res + """;
QProcess* process = new QProcess();
process->startDetached(program, arg);

问题中的代码有3个问题:

  1. 此处为QString item = arg.takeAt(0);takeAt(0)arg列表中删除您的参数。因此,当您将arg传递给startDetached时,它已经是空的。

  2. 您需要使用-login而不是-launch作为命令行参数。请参阅Steam支持文档。

  3. 您必须将用户名和密码作为单独的参数进行传递,因此QStringList arg = QStringList() << "-login" << "123" << "123";而不是QStringList arg; arg << "-launch 123 123";

我的解决方案是:

QStringList arg;
    arg << "-login";
    arg << "123";
    arg << "123";

而不是:

arg << "-launch 123 123";