-1

我正在尝试使用 c++ 编写一个程序,当您选择一个文件并且当用户单击它时,该程序会在右键菜单中添加一个链接,该程序将打开并且我希望输入是文件名。例如,我的桌面上有 text.cpp,我右键单击它,然后有一个名为“识别此文件”的选项,然后当用户选择程序将启动时。我也想将文件名作为变量自动输入,例如 Sfilename 值将变为 test.cpp!

我不是专业人士,请用简单的语言解释,因为我搜索了很多,但我发现的只是一堆我不明白的解释。

我的操作系统是 WINdows 8,我想让它只在 Windows 上工作!

4

2 回答 2

4

要将您的应用程序添加到使用特定文件扩展名的文件的弹出菜单中,您可以执行以下操作:

  1. 打开/创建以下注册表项:

    <root>\Software\Classes\<ext>
    

    如果您希望菜单项仅显示给主叫用户,并且如果您希望它显示给所有用户,并且是所需的文件扩展名(在本例中为),<root>则在哪里。HKEY_CURRENT_USERHKEY_LOCAL_MACHINE<ext>.cpp

  2. 读取(Default)值。如果它不存在,请将其设置为您选择的值。

  3. 打开/创建以下注册表项:

    <root>\Software\Classes\<progid>\Shell\<verb>
    

    <progid>第 2 步中读取的值在哪里,并且<verb>是您为应用选择的唯一值,例如:OpenWithMyApp.

  4. 将其(Default)值设置为菜单项功能的描述,例如:Open with my app.

  5. 创建以下注册表项:

    <root>\Software\Classes\<progid>\Shell\<verb>\command
    
  6. 将其(Default)值设置为您要执行的完整路径和命令行,其中%1放置您希望所选文件出现的位置,例如:"c:\path to\myapp.exe" "%1"

因此,例如,它看起来像这样的结构:

HKEY_CURRENT_USER
  Software
    Classes
      .cpp
        (Default) = "CppFile"
      CppFile
        Shell
          OpenWithMyApp
            (Default) = "Open with my app"
            command
              (Default) = ""c:\path to\myapp.exe" "%1""

有关详细信息,请参阅 MSDN:

文件类型

于 2013-01-15T23:32:13.430 回答
3

这不是一个初学者主题,您的问题的措辞向我表明您刚刚开始使用 Windows 编程。MSDN 上有一个起点可以帮助您。你不能只用谷歌搜索代码,你必须了解 Windows 是如何工作的。具体来说,您必须了解 Shell,它是 Windows 部件的名称,它使事情按照他们的方式工作。当有人双击 .docx 文件并加载 Word 时,这是因为 Word 将自己注册为该扩展名的处理程序。当有人右键单击任何文件并出现“添加到 zip 文件”(或类似内容)时,那是因为 WinZip 已向 Shell 注册以添加该动词。你需要掌握这些东西是什么:

  • 贝壳
  • 文件扩展名(不仅仅是“点后的字母”,而是一堆注册表项等,将点后的字母与应用程序相关联)
  • 扩展的注册处理程序
  • 动词(用于外壳)

从我给您的 MSDN 主题页面链接的文章将教您需要了解的内容。但这并不简单。即使只知道这些词也会帮助您进行搜索。还有一些可用的示例,但不要尝试从这些示例开始:先阅读背景。

于 2013-01-15T22:58:38.897 回答