Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dll外壳扩展如何知道要执行的程序位置? 我现在有C++中的上下文菜单外壳扩展(DLL),并希望将它与我的重命名程序捆绑在一起。_C++_Shell_Visual C++_Dll_Com - Fatal编程技术网

dll外壳扩展如何知道要执行的程序位置? 我现在有C++中的上下文菜单外壳扩展(DLL),并希望将它与我的重命名程序捆绑在一起。

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安装程序提示用户,或者甚至通过提供一个

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

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

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

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

或者,如果所讨论的程序已经在某个地方存储了它自己的安装路径,比如在注册表中,只需在需要时让Shell扩展直接检索该位置即可

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