|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Контекстное меню |
|
[решено] Контекстное меню
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Подскажите как работать с контекстным меню?
Как можно вызвать определенный пукт контекстного меню в любой программе, без эмуляцией нажатий клавиш клавиатуры. |
|
Отправлено: 17:29, 18-09-2009 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Dreadfulangel:
#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 = 4 ;Change to 3th submenu (zero-based), now it will only show the "About" window. 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, 2) $sItemText = _GUICtrlMenu_GetItemText($hSubMenu, $iItemID, 0) If MsgBox(262144+36, "GetItemText", StringFormat("Item text: %s\nExecute?", $sItemText)) = 6 Then _ _SendMessage($hTskMgr, $WM_COMMAND, $iItemID, 0) |
|
------- Отправлено: 18:04, 18-09-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать В этом примере работаем с обычным меню, а необходимо с контекстным, которое появляется при нажатии правой кнопкой мыши.
|
Отправлено: 18:19, 20-09-2009 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Dreadfulangel:
#include <WindowsConstants.au3> #include <SendMessage.au3> ; If Not ProcessExists("Regedit.exe") Then Run("Regedit.exe") WinWait("[CLASS:RegEdit_RegEdit]") EndIf $hRegEdit = WinGetHandle("[CLASS:RegEdit_RegEdit]") WinActivate($hRegEdit) _SendMessage($hRegEdit, $WM_COMMAND, 659, 0) ;Пункт "Экспортировать" ;_SendMessage($hRegEdit, $WM_COMMAND, 675, 0) ;Пункт "Копировать имя раздела" |
|
------- Отправлено: 18:38, 20-09-2009 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Большое спасибо за помощь. Теперь всё понятно.
|
|
Отправлено: 22:50, 20-09-2009 | #5 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать В моём случае несколько особый тип меню наверное...
http://i.imagehost.org/0477/Snap6.png Меню отображает плагины к программе, которые она как хост загружает динамически. То-есть прога сканирует папку и загружает все возможные anyfilename.dll модули которые там находит. Это я о том, что ResHacker здесь безполезен. Не знаю на сколько это обычная ситуация, но думаю здесь подходит только нажатие по текст-содержимому паттерна. Знать бы как! Первый пример довольно сложноватый я не осилил разобраться, тем боелее с TaskMgr.exe я уже как-то сталкивался, одно из самых трудных окон! Может что попроще б? Можно ли зделать Select на определённое слово в меню? (Кстати, я не вижу тут особой разницы простое или контекстное) |
------- Отправлено: 22:38, 02-01-2010 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - Редактирование контекстного меню в Windows 7 | Suneu | Microsoft Windows 7 | 179 | 13-11-2015 14:42 | |
Медиа - [решено] Контекстное меню | helge12 | Microsoft Windows 2000/XP | 14 | 22-12-2010 22:42 | |
Интерфейс - [решено] Как прописать корзину в контекстное меню? | LHf1 | Microsoft Windows 2000/XP | 3 | 23-12-2009 10:22 | |
Установка - [решено] ASDsee и контекстное меню | jesla | Microsoft Windows 2000/XP | 2 | 30-10-2009 13:14 | |
Интерфейс - [решено] Контекстное меню проводника | Stryker88 | Microsoft Windows 2000/XP | 2 | 18-05-2008 03:41 |
|