我想在每个窗口的标题栏上下文菜单中添加自定义操作。目标是在任务视图中添加一个选项,您可以在其中将窗口移动到其他虚拟桌面。我能够使用C#中的GlobalHotKey和WindowsDesktop软件包使用热键来完成此操作。但我想在UI中做到这一点,类似于一些Linux桌面环境。
我知道你通常不能像使用其他上下文菜单一样使用注册表。创建自己的应用程序时,我知道您可以使用AppendMenu
,WndProc
等,并覆盖3.4
来处理它。但这显然不适用于我的意图。
应用程序Moo0 Window Menu Plus达到了预期的效果,但我不知道他们是如何做到的。
我有一种感觉,解决方案可能有点hacky但我仍然想知道它是如何完成的。我愿意使用任何语言来实现这一目标。
答案 0 :(得分:1)
您需要注入流程,这是添加菜单项的唯一方法。
shell hook会在创建适当的窗口时通过HSHELL_WINDOWCREATED
通知您。然后,您可以注入流程(使用另一个钩子类型或CreateRemoteThread
)。在进程中有了.DLL之后,您可以对窗口进行子类化并更改系统菜单。
您需要同时创建32位和64位注入.DLL,我建议您使用本机代码而不是C#编写它。