【问题标题】:c - how to open a selected file in explorerc - 如何在资源管理器中打开选定的文件
【发布时间】:2013-04-01 15:59:40
【问题描述】:

就像在谷歌浏览器中一样,当你下载一些东西时,你可以点击“在资源管理器中打开”或其他东西,它会打开 exlplorer 并突出显示该文件。 我将编写一个程序(可能是一个 c cmd 程序),在给定位置搜索文件,然后我希望能够直接从程序中单击并打开文件。 你有什么方法可以推荐我吗?它不必是 c 甚至是 cmd 程序。

【问题讨论】:

标签: c++ c windows visual-c++ cmd


【解决方案1】:

要打开一个文件夹并选择文件夹中的一个或多个项目SHOpenFolderAndSelectItems 函数就是您要找的。​​p>

【讨论】:

    【解决方案2】:

    如果你下载的文件路径是downloadFilePath

    然后

    Process.Start(downloadFilePath) 
    

    会做正确的事。根据文件扩展名的打开动词路径,它应该启动文件扩展名的默认应用程序

    【讨论】:

    • Process.Start 既不是 C 也不是标准 C++ 函数。这是什么语言?
    【解决方案3】:

    我对 c++ 了解不多,但是 VB 和 youtube 对我有很大帮助:)

    感谢克里斯的链接!

    ShellExecute(handle, "find", <fully_qualified_path_to_folder>, NULL, NULL, 0);
    

    也感谢其他人提供链接!

    【讨论】:

      【解决方案4】:

      你没有提到你正在使用什么框架,所以我会给你我使用的 Qt 选项。这将适用于 Windows 或 Qt 支持的任何操作系统。我在使用 Visual Studio 构建的 Qt 应用程序中使用它。

      QDesktopServices::openUrl(QUrl::fromLocalFile("myfile.xls"));
      QDesktopServices::openUrl(QUrl::fromLocalFile("myfile.doc"));
      QDesktopServices::openUrl(QUrl::fromLocalFile("myfile.txt"));
      

      文档在这里QDesktopServices::OpenUrlQUrl::fromLocalFile

      【讨论】:

        【解决方案5】:

        您可以使用 WinAPI 中的CreateProcess() 函数。

        http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx

        例子:

        #include <iostream>
        #include <Windows.h>
        
        using namespace std;
        
        int wmain()
        {
            STARTUPINFO si;
            PROCESS_INFORMATION pi;
        
            ZeroMemory( &si, sizeof(si) );
            si.cb = sizeof(si);
            ZeroMemory( &pi, sizeof(pi) );
            //open C:\Windows in Explorer
                CreateProcess
                (
                TEXT("c:\\WINDOWS\\system32\\explorer.exe"),
                " C:\\Windows",NULL,NULL,FALSE,
                CREATE_NEW_CONSOLE,
                NULL,NULL,
                &si,
                &pi
                );
                return 0;
        }
        

        【讨论】:

          【解决方案6】:

          system()的做事方式:

          #include <stdlib.h>
          
          int main() {
              system("explorer /select,C:\\Windows\\notepad.exe");
              return 0;
          }
          

          options to explorer.exe的完整列表

          【讨论】:

          • 谢谢 - 这确实有效,但它很快就会打开一个黑色的命令提示符,看起来很粗略。
          猜你喜欢
          • 2010-12-12
          • 1970-01-01
          • 2012-11-20
          • 1970-01-01
          • 2010-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多