Изменение глобальных системных меню

Есть ли способ в C# глобально добавить пункт меню ко всем системным меню во всех активных окнах? Возможно, под командой "Развернуть"?

2 ответа

Решение

Это не может быть сделано в управляемом коде. И это было бы удивительно сложно даже в неуправляемом коде. По сути, вам придется внедрять свой код в каждый процесс, а затем вставлять элементы в меню локальной системы, а затем подключать процедуру главного окна для перехвата сообщений WM_SYSCOMMAND, чтобы вы могли заставить элементы меню что-то делать.

Вы МОЖЕТЕ написать код, который добавит стиль WS_TOPMOST к (большинству) окон (если позволяет безопасность), просто используя FindWindow чтобы получить ручку окна, а затем SetWindowLong изменить стиль окна.

Но вы не сможете поместить пользовательский интерфейс для этого в системные меню других процессов.

Вы можете сделать это, записав всю логику в C# в исполняемый файл. Вам также придется написать некоторый код на C/C++ в виде хука, который будет отправлять события из пунктов меню в ваш exe-файл. Вы можете найти пример здесь https://github.com/AlexanderPro/SmartSystemMenu

Другие вопросы по тегам