2

Недавно я обнаружил проводник процессов (https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) и хотел бы добавить его в контекстное меню, если щелкнуть правой кнопкой мыши панель задач. У него есть возможность заменить диспетчер задач, но я хочу оставить оба. Я хочу добавить меню под названием Process Explorer под диспетчер задач, где красная стрелка указывает. Где я могу найти это в реестре? Я искал, но я не могу найти, где находится это контекстное меню под редактором реестра.

РЕДАКТИРОВАТЬ: я нахожусь на Windows 8.1 Pro, и знаю, как использовать редактор реестра и немного знаю о хакере ресурсов. Я искал любые значения регистра с помощью панели задач, менеджера задач, блокировки панели задач и т.д., Но я ничего не нашел. Я сделал копию файла explorer.exe для анализа, но я не вижу ничего действительно редактируемого. Любая помощь приветствуется :)

EDIT2: я знаю, как добавить пользовательские элементы в контекстное меню, вызываемое правой кнопкой мыши, но мне нужно добавить его в контекстное меню на панели задач, которое я не могу найти. Может кто-нибудь, пожалуйста, помогите мне!

Что я имею: Контекстное меню панели задач

Что я хочу покрасить:

3 ответа3

3

(Скопировано из комментариев согласно запросу TO):

Дело в том, что это меню (насколько я знаю) не определяется внешними параметрами в реестре или чем-то еще, это всего лишь часть логики внутри explorer.exe. Таким образом, нам нужно было бы эффективно изменить логику explorer.exe, что возможно, загрузив в нее наш собственный код и перехватив действие открытия всплывающего окна, чтобы мы могли добавить элемент, а затем перехватить сообщение Windows о том, что кто-то щелкнул по нашему элементу так, мы можем отреагировать на это.

Единственный способ, который я знаю, - это создание инструмента, который внедряет DLL в проводник, используя глобальный хук WH_CALLWNDPROC , чтобы манипулировать меню на WM_INITMENUPOPUP чтобы добавить элемент меню и реагировать на сообщение WM_COMMAND отправленное вновь добавленным элементом меню, открывая Process Проводник.

Однако сейчас у меня нет времени, чтобы создать этот инструмент самостоятельно, но я могу дать подсказки:

Вам нужно будет подключиться к хукам окон (SetWindowsHookEx , CallWndProc), обработке сообщений окна (в случае, если это ново для вас) и подклассам окон (SetWindowLong , GWL_WNDPROC , CallWindowProc). Идентификация проводника: GetModuleFileName (пока ваш хук загружен в него). И определение правильного меню для изменения (изменить: с помощью InsertMenuItem) является проблемой само по себе (хотя вы, вероятно, можете проверить идентификаторы существующих пунктов меню, чтобы идентифицировать меню - GetMenuItemCount , GetMenuItemInfo). Чтобы наконец запустить Process Explorer, вам понадобится CreateProcess или ShellExecute .

Это, конечно, может быть объединено с моим комментарием, но это не имеет особого смысла, потому что если вы все равно используете метод ловушки, вы также можете просто добавить элемент оттуда, и вам не нужно изменять какие-либо системные файлы.

0

Может быть, это не совсем то, что вы ищете, но вы всегда можете создать папку, в которую вы поместите нужные ярлыки для различных программ (например, Process Explorer), и добавить ее на панель задач в качестве новой панели инструментов.

0

РЕДАКТИРОВАТЬ: не правильный ответ, хотя я оставлю это здесь для полноты и истории.


Это внутри shell32.dll

Попробуйте запустить:
grep -ain "taskmgr.exe" shell32.dll > shell32-grep.txt
Большая часть текста, который вы получите, будет XML. Откройте его с помощью текстового редактора и найдите taskmgr.exe , который вы найдете в теге <sh:command> . Посмотрите вокруг, и вы увидите другие опции (и кучу других), а также под другими тегами <sh:command> .

Например, команда %windir%\system32\rundll32.exe shell32.dll,Options_RunDLL 3 - это кнопка свойств.

На мой взгляд, единственный вариант, который у вас есть, это редактирование shell32.dll с помощью dll-редактора и надежда на хорошее :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .