自定义标题栏上下文菜单操作

时间:2017-03-23 23:20:40

标签: windows shell contextmenu titlebar

我想在每个窗口的标题栏上下文菜单中添加自定义操作。目标是在任务视图中添加一个选项,您可以在其中将窗口移动到其他虚拟桌面。我能够使用C#中的GlobalHotKey和WindowsDesktop软件包使用热键来完成此操作。但我想在UI中做到这一点,类似于一些Linux桌面环境。

我知道你通常不能像使用其他上下文菜单一样使用注册表。创建自己的应用程序时,我知道您可以使用AppendMenuWndProc等,并覆盖3.4来处理它。但这显然不适用于我的意图。

应用程序Moo0 Window Menu Plus达到了预期的效果,但我不知道他们是如何做到的。

我有一种感觉,解决方案可能有点hacky但我仍然想知道它是如何完成的。我愿意使用任何语言来实现这一目标。

1 个答案:

答案 0 :(得分:1)

您需要注入流程,这是添加菜单项的唯一方法。

shell hook会在创建适当的窗口时通过HSHELL_WINDOWCREATED通知您。然后,您可以注入流程(使用另一个钩子类型或CreateRemoteThread)。在进程中有了.DLL之后,您可以对窗口进行子类化并更改系统菜单。

您需要同时创建32位和64位注入.DLL,我建议您使用本机代码而不是C#编写它。