关于 c :QProcess 在执行带参数的 exe 时的问题 | 珊瑚贝

QProcess issue in executing a exe with arguments


我在设置 QProcess 以使用参数运行可执行文件时遇到问题。相同的Qt代码如下,

1
2
3
4
QString program =“C:\\Setup.exe”;
QStringList arguments;
arguments <<“-uninstall”;
QProcess::startDetached(program, arguments);

这个片段的输出是卸载一些程序。但它没有发生。我是不是做错了什么?

但是如果我进入 cmd 提示符并执行相同的操作,例如.,

c:/> “C:/Setup.exe” -卸载
这完美无缺。

  • “它没有发生” – 你是什么意思?它是否无法启动程序,或者只是无法通过卸载标志?连接到 QProcess 错误信号会收到什么错误?
  • 您是否尝试过使用 “C:\\\\\\\\\\\\\\\\Setup.exe”?还是没有参数的”C:\\\\\\\\\\\\\\\\Setup.exe -unistall”?
  • 实际上路径是不同的。我用正斜杠替换了 “\\\\”。它的工作。
  • 我假设您忘记转义反斜杠,即 c:\\\\\\\\\\\\\\\\setup.exe 而不是 c:\\\\\\\\setup.exe?


至少有两种方法可以解决您的问题。

  • 根据文档使用”/”作为目录分隔符:

    If you always use”/”, Qt will translate your paths to conform to the underlying operating system.

  • 根据文档中的示例,在将文件路径作为字符串处理时转义反斜杠:

    1
    2
    env.insert(“TMPDIR”,“C:\\\\MyApp\\\\temp”); // Add an environment variable
    env.insert(“PATH”, env.value(“Path”) +“;C:\\\\Bin”);

因此,你应该这样写:

1
2
3
4
QString program =“C:/Setup.exe”;
QStringList arguments;
arguments <<“-uninstall”;
QProcess::startDetached(program, arguments);

或者这个:

1
2
3
4
QString program =“C:\\\\Setup.exe”;
QStringList arguments;
arguments <<“-uninstall”;
QProcess::startDetached(program, arguments);

一般来说,当遇到此类问题时,您总是可以使用以下语法打印出错误字符串以获取更多信息:

1
qDebug() << myProcess.errorString();

不过,这当然需要一个实例。


来源:https://www.codenong.com/23243436/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9606.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?