Изменение глобальных системных меню - PullRequest
1 голос
/ 22 декабря 2009

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

Ответы [ 2 ]

4 голосов
/ 22 декабря 2009

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

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

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

0 голосов
/ 19 января 2019

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

...