【问题标题】:How to start explorer.exe with QProcess when the path to the specified file contains spaces?当指定文件的路径包含空格时,如何使用 QProcess 启动 explorer.exe?
【发布时间】:2020-10-30 22:58:05
【问题描述】:

我想启动资源管理器并选择一个特定文件。所以我跑了

QProcess::startDetached(command);

命令设置为

explorer.exe /select,C:\Users\....\file.txt

这可以正常工作,但如果文件路径包含空格,则会失败。但是如果我把路径放在引号中

explorer.exe /select,"C:\Users\....\file.txt"

资源管理器将打开文档文件夹而不是指定路径。 从命令行运行相同的字符串可以正常工作。

字符串被初始化为

command = "explorer.exe" + "/select," + "\"" + QDir::toNativeSeparators(path) + "\"";

【问题讨论】:

  • 您能否更具体地说明您用于调用startDetached 的确切语法?
  • 为什么不直接使用openUrl
  • @AlanBirtles,OP 想要选择文件,而不是打开它。
  • @scopchanov 请看我的编辑。
  • 不推荐使用startDetached。你应该像我的回答那样分开论点。

标签: c++ qt qt5 explorer qprocess


【解决方案1】:

如何做到这一点确实不是那么直观,但也不是不可能。

解决方案

将命令的所有参数explorer.exe分解为单独的字符串,即/select,the_path

示例

QProcess::startDetached("explorer.exe", QStringList{"/select", ",", "C:\\Users\\Your Username\\Desktop\\Folder With Spaces\\file.txt"});

【讨论】:

  • 确实有效!但我必须承认,我不明白为什么。 QProcess 是自动添加引号,还是逗号有什么特别之处?
  • @MiB_Coder,我猜这是解析参数的方式。
猜你喜欢
  • 1970-01-01
  • 2011-11-20
  • 2014-06-04
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 2013-04-07
  • 1970-01-01
  • 2012-08-19
相关资源
最近更新 更多