我正在寻找一种方法来获得更多选项的上下文菜单,如复制文本并将其发送到服务器或翻译器。 任何build议如何做到这一点? 编辑:右键单击一个string,这将允许我parsing该string到我的应用程序。 (所以在Win Explorer中)。
我想要做到以下几点: 当用户右键单击任何文件(在Windows中)我想要上下文菜单popup一个特殊的项目。 我用regedit做了这个,我在互联网上跟着几个例子,并得到了这个 [HKEY_CLASSES_ROOT\*\shell\Do something] [HKEY_CLASSES_ROOT\*\shell\Do something\command] @="notepad.exe %1" 这工作正常,但我想运行一个Java应用程序,并发送选定项目的文件path
当使用IExecuteCommand方法实现上下文菜单shell扩展(如本博文中所述)时,给定的菜单选项如何显示为灰色? 例如,假设shell扩展提供了一些菜单选项,其中一些应该根据shell扩展计算的某些状态和条件变成灰色,例如:如果用户右键单击某个文件,并且shell扩展程序检测到此文件有一些给定的属性,一些shell扩展上下文菜单选项应灰显。 如何使用IExecuteCommand来做到这IExecuteCommand ? 或者应该使用另一个Windows Shell COM接口来达到这个目的?
我为我正在开发的一个小应用程序开发了一个非常基本的shell扩展。 我已经使用了一段时间没有任何问题,但我只是注意到,在Windows XP中,在开始菜单 – >所有程序,如果我右键单击文件夹那里,select“打开”或“探索”,我的小应用程序显示,而不是浏览器窗口。 当我看到这个时,你可以想象我有多开心和自豪。 我觉得这很奇怪,因为这是它发生的唯一的地方(到目前为止)。 我在“目录”registry项下注册了shell扩展,因此只有在右键单击文件夹时才显示。 我已经发现了一些关于shell扩展的好文章,并且我对这些做了如此的介绍,但是我在这个winapi的东西里并没有在我的舒适区域附近。 我做了很多摆弄ID的工作,但是我找不出什么问题。 这里是我的querycontextmenu实现,我希望我犯了一个愚蠢的错误在那里,一个C ++大师可以马上发现。 任何帮助将不胜感激。 STDMETHODIMP ShellExtension::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags){ if (CMF_DEFAULTONLY & uFlags) { return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 0); } UINT uID = idCmdFirst; if (!InsertMenu(hMenu, indexMenu, MF_SEPARATOR | MF_BYPOSITION, 0, NULL)) { return HRESULT_FROM_WIN32(GetLastError()); } HMENU hSubmenu = CreatePopupMenu(); InsertMenu […]
我在Internet Explorer的上下文菜单上有一个自定义条目。 我想用选定的项目做一些事情,例如,运行一个程序,接收那个select为ARGV [1]。 例如,如果我右键单击位于桌面上的名为whatever.zip的文件,应运行以下内容:my_binary path \ to \ desktop \ whatever.zip
我有一个Windows上下文菜单项通过这些registry项调用Windows窗体… HKLM\Software\Classes\*\shell\myappname HKLM\Software\Classes\*\shell\myappname\command 但是,当我的Windows窗体启动,我希望它位于上下文菜单被调用的地方附近。 有没有办法做到这一点? 我想我需要获得Windows事件的坐标并设置窗口位置?
我遇到了与上述相同的问题“ Shell扩展在Windows资源pipe理器中不起作用,但在其他程序中工作? ”,但它不能在只有资源pipe理器中工作 。 操作系统Windows 7 x64。 Dll被编译为x64项目。 当我在资源pipe理器中调用上下文菜单时,我的部分跟踪文件: DllGetClassObject Factory: Create component clComponent::QueryInterface: Return pointer to IContextMenu Factory: Self Destruction clComponent::QueryInterface: Interface doesn't supported : {00000003-0000-0000-C000-000000000046} clComponent::QueryInterface: Interface doesn't supported : {0000001B-0000-0000-C000-000000000046} clComponent::QueryInterface: Return pointer to IUnknown clComponent::QueryInterface: Interface doesn't supported : {00000018-0000-0000-C000-000000000046} clComponent::QueryInterface: Interface doesn't supported : {00000019-0000-0000-C000-000000000046} clComponent::QueryInterface: Interface doesn't supported : […]
显示默认的右键点击上下文菜单非常简单,在这里和networking上的其他地方都有很好的文档logging。 我基于一个很大程度上closures了Andreas Johansson的框架如何显示在C#中的文件的系统菜单 http://windows-tech.info/19/e5ad8751fc63816b.php )。 我的应用程序提供了一个简单的浏览器般的视图来显示一些自定义属性(感谢Windows摆脱IColumn)。 右键单击上下文菜单效果很好。 然而,我现在发现自己真的想右键拖动上下文菜单(复制在这里,移动到这里,在这里创build快捷方式,取消,再加上像TSVN处理程序的任何额外的添加)。 我认为会有一个额外的标志,我可以添加到QueryContextMenu uFlags,但唉,我没有看到一个。 是否有替代QueryContextMenu提取与右拖动菜单相关的菜单项?
我想创build一个.msi安装程序,当我在桌面上右键单击鼠标时,将添加一个级联上下文菜单。 首先,我试着用下面的脚本来做这个,而且这个工作正常: [HKEY_CLASSES_ROOT\DesktopBackground\Shell\MyApp] "MUIVerb"="My Application" "SubCommands"="app1;app2" "Position"=- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\app1] @="Run App1" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\app1\command] @="C:\\app1.exe" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\app2] @="Run App2" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\app2\command] @="C:\\app2.exe" 但是,当我尝试在WiX工具集中做同样的事情,这不再起作用。 当我右键单击桌面时,我可以查看“我的应用程序”,但没有层叠菜单(“运行App1”和“运行App2”不显示)。 这是我的XML代码: <DirectoryRef Id="TARGETDIR"> <Component Id="RegistryEntries" Guid="ADF145F9-D3C0-4961-A463-812595B9BF60"> <RegistryKey Root="HKCR" Key="DesktopBackground\Shell\MyApp" Action="createAndRemoveOnUninstall"> <RegistryValue Type="string" Name="MUIVerb" Value="My Application" KeyPath="yes"/> <RegistryValue Type="string" Name="SubCommands" Value="app1;app2"/> </RegistryKey> <RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\app1" Action="createAndRemoveOnUninstall"> <RegistryValue Type="string" Value="Run App1"/> <RegistryValue Key="command" Type="string" Value="C:\app1.exe"/> </RegistryKey> <RegistryKey Root="HKLM" […]
现在我正在开发一个使用Qt的search应用程序,我想要的是右键单击一个文件来显示Windows Shell ContextMenu。 但我能得到的只是IContextMenu或CMenu 。 如何在Qt中使用它,或者将CMenu或IContextMenu转换为QMenu。