Windows 如何获取新的子菜单项

Windows 如何获取新的子菜单项,windows,winapi,visual-c++,Windows,Winapi,Visual C++,我正在开发一个应用程序,因为我需要显示新上下文菜单的子菜单。i、 当我们在桌面上右键点击时,我们会看到新的上下文菜单项,点击新建时,我们会看到文件夹、快捷方式、文本文档等 我的问题是- 是否有任何API可以将列表获取到new的子菜单? 还有没有API可以获取发送到的子菜单? New和Send To菜单项是实现IContextMenu2,3接口的简单shell扩展。新shell扩展的CLSID为{D969A300-E7FF-11d0-A93B-00A0C90F2719},发送到shell扩展的CL

我正在开发一个应用程序,因为我需要显示新上下文菜单的子菜单。i、 当我们在桌面上右键点击时,我们会看到新的上下文菜单项,点击新建时,我们会看到文件夹、快捷方式、文本文档等

我的问题是-

是否有任何API可以将列表获取到new的子菜单? 还有没有API可以获取发送到的子菜单? New和Send To菜单项是实现IContextMenu2,3接口的简单shell扩展。新shell扩展的CLSID为{D969A300-E7FF-11d0-A93B-00A0C90F2719},发送到shell扩展的CLSID为{7BA4C740-9E81-11CF-99D3-00AA004AE837}。因此,您需要实现host for IContextMenu接口

创建一个COM对象

查询IContextMenu和IShellExtInit

调用IShellExtInit.Initialize

创建临时菜单

调用IContextMenu.QueryContextMenu

在temp菜单中,您将拥有所有可用的命令

要运行命令,请调用IContextMenu.InvokeCommand。 您可以在博客中找到很多详细信息:

New和Send To菜单项是实现IContextMenu2,3接口的简单shell扩展。新shell扩展的CLSID为{D969A300-E7FF-11d0-A93B-00A0C90F2719},发送到shell扩展的CLSID为{7BA4C740-9E81-11CF-99D3-00AA004AE837}。因此,您需要实现host for IContextMenu接口

创建一个COM对象

查询IContextMenu和IShellExtInit

调用IShellExtInit.Initialize

创建临时菜单

调用IContextMenu.QueryContextMenu

在temp菜单中,您将拥有所有可用的命令

要运行命令,请调用IContextMenu.InvokeCommand。 您可以在博客中找到很多详细信息:


这对我很有效,谢谢你的解决方案。关于更多的问题,一旦我点击任何选项文本,文件夹,捷径。它创建文件,但不会处于编辑模式,即单击测试文件,它将创建新的文本document.txt。用户必须明确地重命名该项。新的外壳扩展正在等待从Windows资源管理器调用它,并且它与资源管理器有更多的集成。Explorer通过iobjectwith shell扩展的site接口提供了许多类似IShellView的接口。它允许shell扩展调用用户友好的重命名功能。Hi New运行良好,但当我创建Send to时,上下文菜单上的Send to出现了。但单击“发送”可显示空列表。除了New.之外,我是否需要发送任何更改。使用哪些参数调用IShellExtInit.Initialize?ShellExit->InitializeNULL,pdtobj,NULL;我的目标为我工作,谢谢你的解决方案。关于更多的问题,一旦我点击任何选项文本,文件夹,捷径。它创建文件,但不会处于编辑模式,即单击测试文件,它将创建新的文本document.txt。用户必须明确地重命名该项。新的外壳扩展正在等待从Windows资源管理器调用它,并且它与资源管理器有更多的集成。Explorer通过iobjectwith shell扩展的site接口提供了许多类似IShellView的接口。它允许shell扩展调用用户友好的重命名功能。Hi New运行良好,但当我创建Send to时,上下文菜单上的Send to出现了。但单击“发送”可显示空列表。除了New.之外,我是否需要发送任何更改。使用哪些参数调用IShellExtInit.Initialize?ShellExit->InitializeNULL,pdtobj,NULL;我初始化了一个对象