Цитата semiono:
Кстати, я заметил taskmgr.exe изменяет пункты меню взависимости от активных табов »
|
Точно!
Тогда так:
Код:
#include <WindowsConstants.au3>
#include <SendMessage.au3>
#include <GuiMenu.au3>
Run("taskmgr.exe")
WinWait("[CLASS:#32770;REGEXPTITLE:.*Windows.*]", "", 5)
$hTskMgr = WinGetHandle("[CLASS:#32770;REGEXPTITLE:.*Windows.*]")
If Not WinExists($hTskMgr) Then Exit 1
$nCurrentTab = ControlCommand($hTskMgr, "", "SysTabControl321", "CurrentTab")
$nSubMenu_Item = 3
If $nCurrentTab = 1 Then $nSubMenu_Item += 1
$hMenu = _GUICtrlMenu_GetMenu($hTskMgr)
;Theese two is to activate the menu, strange bug, but GetItemSubMenu fails if the menu was not used (clicked)
ControlSend($hTskMgr, "", $hMenu, "!_")
ControlClick($hTskMgr, "", "SysTabControl321")
$hSubMenu = _GUICtrlMenu_GetItemSubMenu($hMenu, $nSubMenu_Item)
;2 = Shutdown, 3 = Restart (2 and 3 it's zero-based item from the top of menu)
$iItemID = _GUICtrlMenu_GetItemID($hSubMenu, 3)
ConsoleWrite(_GUICtrlMenu_GetItemText($hSubMenu, $iItemID, 0))
;_SendMessage($hTskMgr, $WM_COMMAND, $iItemID, 0)
Если в консоли выводится нужный текст, то просто удали строчку с ConsoleWrite и раскомментируй последнюю строчку.