dll外壳扩展如何知道要执行的程序位置? 我现在有C++中的上下文菜单外壳扩展(DLL),并希望将它与我的重命名程序捆绑在一起。
我的问题是,一旦加载dll并通过上下文菜单调用Execute,shell扩展如何知道要启动的程序的位置 我将有inno设置,包括我的外壳扩展(dll)。我的理解是,shell扩展将处理将所选文件路径传递给系统上安装的重命名程序。但是shell怎么知道调用程序呢?dll外壳扩展如何知道要执行的程序位置? 我现在有C++中的上下文菜单外壳扩展(DLL),并希望将它与我的重命名程序捆绑在一起。,c++,shell,visual-c++,dll,com,C++,Shell,Visual C++,Dll,Com,我的问题是,一旦加载dll并通过上下文菜单调用Execute,shell扩展如何知道要启动的程序的位置 我将有inno设置,包括我的外壳扩展(dll)。我的理解是,shell扩展将处理将所选文件路径传递给系统上安装的重命名程序。但是shell怎么知道调用程序呢? 关于Shell没有“重命名程序”的概念,这是Shell扩展实现的私有细节。如果您的Shell扩展正在尝试启动外部程序,那么您有责任确保您的Shell扩展知道在哪里可以找到该程序 例如,通过让Inno安装程序提示用户,或者甚至通过提供一个
关于Shell没有“重命名程序”的概念,这是Shell扩展实现的私有细节。如果您的Shell扩展正在尝试启动外部程序,那么您有责任确保您的Shell扩展知道在哪里可以找到该程序 例如,通过让Inno安装程序提示用户,或者甚至通过提供一个单独的配置UI以及Shell扩展,然后将用户的选择保存在注册表中,或者保存在用户配置文件中的文件中,您的Shell扩展可以在以后需要时找到它的任何位置 或者,如果所讨论的程序已经在某个地方存储了它自己的安装路径,比如在注册表中,只需在需要时让Shell扩展直接检索该位置即可 无论采用哪种方式,Shell扩展都必须记住传递给其
IShellExtInit::Initialize()
实现的输入文件路径,然后IContextMenu::InvokeCommand()
实现在确定其位置后将这些路径传递给外部程序