QT启动资源管理器进程参数

QT Start explorer process parameters

本文关键字:参数 进程 资源管理器 启动 QT      更新时间:2023-10-16

要在QT中启动应用程序,我可以使用大多数语言中常见的进程函数,并且可以以通常的方式传递参数。但是,我正在尝试启动资源管理器并传递一个参数。

所以代码:

QProcess process;
QString test("/select,"E:\Data\testimage.dat"");
process.startDetached("explorer.exe", QStringList() << test);

应该打开资源管理器并突出显示文件夹E:data中的文件testimage.dat。但是,它会打开资源管理器并突出显示文档。

所以我在c#中尝试了相同的函数:
string test = "/select,"E:\Data\testimage.dat"";
Process.Start("explorer.exe", test);

这是我所期望的,打开资源管理器并突出显示文件。

从我在这里看到的,QT代码应该做完全相同的事情。我使用startDetached作为QT版本只工作的第一次说它已经运行。我知道参数和我复制粘贴的是一样的。

Windows 8.1和QT5.2 MSVC10

解决了,但还是很困惑。

在命令行中,

条目
explorer /select,"E:Datatestimage.dat"

可以,但是命令

explorer /select,E:Datatestimage.dat

不。

该命令行的副本也可以在c#中使用。但是在QT中,命令

process.startDetached("EXPLORER.exe", QStringList() << "/select,"E:\Data\testimage.dat"");

可以工作,但是当您删除引号时,生成的行可以正常工作

process.startDetached("EXPLORER.exe", QStringList() << "/select,E:\Data\testimage.dat");

,当您创建测试目标以查看到达目标的参数是什么时,从c#或命令行发送时不再出现引号,但从QT发送时它们是。