2017-04-14 63 views
0

我现在有C++中的上下文菜单外壳扩展(DLL)并想和我的一个重命名程序捆绑此。dll shell扩展如何知道要执行的程序位置?

我的问题是,一旦该dll被加载和执行是通过上下文菜单调用,怎么会在外壳扩展知道程序启动的位置?

我会Inno Setup的,包括我的外壳扩展(DLL)。我的理解是shell扩展将处理将选定文件路径传递给系统上安装的重命名程序。但是shell怎么知道调用这个程序呢? 问候

回答

1

壳牌有没有一个“重命名方案”的概念,这是你的外壳扩展的实施的私人细节。如果您的Shell扩展正在尝试启动外部程序,则有责任确保您的Shell扩展程序知道在哪里找到该程序。

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

或者,如果有问题的程序已经某处存储自己的安装路径,就像在注册表中,只要有你的外壳扩展直接检索该位置需要的时候。无论哪种方式,您的外壳扩展将不得不记住传递到其实现的输入文件路径,然后您的IContextMenu::InvokeCommand()实现将在确定它的位置后将这些路径传递给外部程序位于。