dll 外壳扩展如何知道要执行的程序位置?



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

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

我将没有设置来包含我的外壳扩展(dll)。我的理解是 shell 扩展将处理将所选文件路径传递给系统上安装的重命名程序。但是外壳怎么知道调用程序呢? 问候

命令行管理程序没有"重命名程序"的概念,这是 Shell 扩展实现的私有细节。 如果命令行管理程序扩展尝试启动外部程序,则有责任确保命令行管理程序扩展知道在哪里可以找到该程序。

例如,通过让 Inno 设置提示用户,甚至通过提供单独的配置 UI 以及 Shell 扩展,然后将用户的选择保存在注册表或用户配置文件中的文件中,即 Shell 扩展以后在需要时可以找到它的任何位置。

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

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

最新更新