修改全局系统菜单

时间:2009-12-22 03:16:12

标签: c# hook menu

C#中是否有办法将菜单项全局添加到所有活动窗口的所有系统菜单中?也许在“最大化”命令下?

2 个答案:

答案 0 :(得分:4)

这不能在托管代码中完成。即使在无人值守的代码中也会非常困难。基本上你必须将代码注入每个进程,然后将项插入本地系统菜单,然后挂钩主窗口proc来拦截WM_SYSCOMMAND消息,这样你就可以让菜单项做一些事情。

您可以编写将WS_TOPMOST样式添加到(大多数)窗口(安全许可)的代码,只需使用FindWindow获取窗口句柄,然后使用SetWindowLong更改窗口样式。

但您无法将此UI用于其他进程的系统菜单。

答案 1 :(得分:0)

您可以通过在exe文件中用C#编写所有逻辑来做到这一点。您还必须用C / C ++编写一些代码作为钩子,这会将事件从菜单项发送到exe文件。您可以在这里https://github.com/AlexanderPro/SmartSystemMenu

找到示例