在资源管理器中打开

10

如何在C++中通过代码打开资源管理器路径。我搜索了谷歌,但是没有找到系统命令以外的方法,然而,我不想让它阻塞或显示控制台窗口。

3个回答

27

你可能正在寻找 shellapi.h 中的 ShellExecute() 函数。它需要一个“操作动词”、一个路径和可选参数。在你的情况下,应该使用以下其中之一:"open" 或 "explore":

ShellExecuteA(NULL, "open", "C:\\", NULL, NULL, SW_SHOWDEFAULT);

这将在C:处打开一个未附加的资源管理器窗口。ShellExecute()将提供与在运行对话框中键入命令基本相同的操作。它还可以处理URL,因此以下内容将打开用户的默认浏览器:

ShellExecuteA(NULL, "open", "http://www.google.com", NULL, NULL, SW_SHOWDEFAULT);

虽然请确保注意文档中的注释,ShellExecute 依赖于 COM(尽管您的代码本身不必担心任何 COM 对象)。

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

运行得很好,我也不需要初始化com接口。 - Lodle
错误 C2664: 'ShellExecuteW':无法将参数 2 从 'const char [5]' 转换为 'LPCWSTR'。 - john k
需要包含的头文件是 Shellapi.h。 - M Katz
完全不知道“动作动词”。谢谢提醒。(示例中少了一个反斜杠)。 - TinyRacoon

2

这不会显示命令窗口,只是打开目录。


system("explorer C:\\");

@berlindev,“system”这个词源是什么? - TinyRacoon
@Harsh kurra 你可能需要将路径用引号括起来。例如,system("explorer "C:\me path with spaces\"。否则,资源管理器会认为你的路径是多个参数。 - TinyRacoon

0

我现在正在使用VS2017,以下方式可行:

ShellExecute(NULL, L"open", L"YourFolderPath\\YourFile.xxx", NULL, NULL, SW_RESTORE);

同时还可以参考C++中使用ShellExecute打开.exe文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接