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

时间:2017-04-14 01:05:10

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

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

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

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

1 个答案:

答案 0 :(得分:1)

Shell没有“重命名程序”的概念,这是Shell扩展实现的私有细节。如果您的Shell扩展程序尝试启动外部程序,则您有责任确保Shell扩展程序知道在何处找到该程序。

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

或者,如果有问题的程序已经存储了自己的安装路径,就像在注册表中一样,只需让Shell扩展程序在需要时直接检索该位置。

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