c++ - dll shell 扩展如何知道要执行的程序位置?

标签 c++ shell visual-c++ dll com

我现在有一个用 C++ 编写的上下文菜单 shell 扩展 (dll),我想将其与我的重命名程序捆绑在一起。

我的问题是,一旦加载了 dll 并通过上下文菜单调用了 Execute,shell 扩展如何知道要启动的程序的位置?

我将进行 inno 设置以包含我的 shell 扩展 (dll)。我的理解是 shell 扩展将处理将选定的文件路径传递给系统上安装的重命名程序。但是shell怎么知道要调用程序呢? 问候

最佳答案

Shell 没有“重命名程序”的概念,这是您的 Shell 扩展实现的私有(private)细节。如果您的 Shell 扩展试图启动外部程序,您有责任确保您的 Shell 扩展知道在哪里可以找到该程序。

例如,通过让您的 Inno 安装程序提示用户,或者甚至通过您提供一个单独的配置 UI 以及您的 Shell 扩展,然后将用户的选择保存在注册表中,或者保存在用户配置文件的文件中,任何地方以便您的 Shell 扩展可以在以后需要时找到它。

或者,如果有问题的程序已经将自己的安装路径存储在某处,例如在注册表中,只需让您的 Shell 扩展在需要时直接检索该位置即可。

无论哪种方式,您的 Shell 扩展都必须记住传递给其 IShellExtInit::Initialize() 实现的输入文件路径,然后是您的 IContextMenu::InvokeCommand () 实现将在确定其所在位置后将这些路径传递给外部程序。

关于c++ - dll shell 扩展如何知道要执行的程序位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43403871/

相关文章:

c++ - 将 UNALIGNED MSVC 特定代码转换为可移植 C++ 代码?

c++ - Qt5 : output of bash process has input statements too

bash - 如何将自动完成列表传递给 shell 中的管道?

linux - 如何从具有多天数据的日志文件中检索一天数据

c - 如何在清除标准输入之前检查标准输入是否为空

c++ - VS2015中的wpath在哪里

c++ - int a =++i+++i 是未定义的行为吗?

c++ - 将结构体成员函数指针赋值给类函数

c++ - g++ 无法链接 OpenAL 库

bash - 子 shell 中的 shell split