【问题标题】:Open in Explorer在资源管理器中打开
【发布时间】:2008-12-10 02:05:57
【问题描述】:

如何通过 c++ 中的代码在资源管理器中打开路径。我用谷歌搜索,除了系统命令之外找不到任何东西,但是,我不希望它阻止或显示控制台窗口。

【问题讨论】:

    标签: c++ windows explorer


    【解决方案1】:

    您可能正在寻找shellapi.h 中的ShellExecute() 函数。它使用“动作动词”、路径和可选参数调用。在您的情况下,这将需要“打开”或“探索”,如下所示:

    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 接口的东西
    • 错误 C2664: 'ShellExecuteW' : 无法将参数 2 从 'const char [5]' 转换为 'LPCWSTR'
    • 要包含的标头是 Shellapi.h。
    • 根本不知道“动作动词”。谢谢。 (打开的示例中缺少反斜杠)。
    【解决方案2】:

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

    system("explorer C:\\");

    【讨论】:

    • @berlindev “系统”从何而来?
    • @Harsh kurra 您可能需要将路径放在引号中。例如system("explorer \"C:\\me path with spaces\\"。否则explorer会认为你的路径是多个参数。
    【解决方案3】:

    我现在用的是VS2017,使用方法如下:

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

    也参考ShellExecute to open an .exe in C++

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多