QProcess 无法传递参数

Posted

技术标签:

【中文标题】QProcess 无法传递参数【英文标题】:QProcess fails to pass the arguments 【发布时间】:2016-01-05 15:34:28 【问题描述】:

我想制作一个小型 Qt 应用程序,以便能够使用 -login 登录密码作为启动选项在 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);

【问题讨论】:

【参考方案1】:

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

    QString item = arg.takeAt(0); 这里 takeAt(0)arg 列表中删除您的论点。所以当你将arg 传递给startDetached 的那一刻,它已经是空的了。

    您需要使用-login 而不是-launch 作为命令行参数。见Steam support documentation。

    您必须将用户名和密码作为单独的参数传递,所以QStringList arg = QStringList() &lt;&lt; "-login" &lt;&lt; "123" &lt;&lt; "123"; 而不是QStringList arg; arg &lt;&lt; "-launch 123 123";

【讨论】:

【参考方案2】:

我的解决方案是:

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

代替:

arg << "-launch 123 123";

【讨论】:

以上是关于QProcess 无法传递参数的主要内容,如果未能解决你的问题,请参考以下文章

Qt通过QProcess启动进程并传递命令行参数

Qt通过QProcess启动进程并传递命令行参数

如何在 QProcess 执行它们时打印真正的 QProcess 参数列表

为啥 QProcess 将我的参数中的“=”转换为空格

将参数从 Qt 传递到 shell 脚本文件

如何在 QProcess 中使用队列?