Что нового

[Элементы GUI] Как вызвать контекстное меню (не +{F10})

shmel

Новичок
Сообщения
5
Репутация
0
Как вызвать контекстное меню нажатием соответствующей кнопки на клавиатуре?
Shift + F10 не подходит, нужно именно нажатие правой кнопки мыши. Вернее его аналог на клавиатуре. В "Send Key list" вроде ничего подобного нет.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
shmel
Всего лишь погуглил, и мозг включил.

Код:
#include "SendMessage.au3"

Global Const $WM_RBUTTONDOWN = 0x0204
Global Const $WM_RBUTTONUP = 0x0205

$GUI=GUICreate('My Program', 250, 260, 10, 400)
$Gui2 = WinGetHandle($Gui)

$Button1=GUICtrlCreateButton('кнопка', 10, 10, 120, 22)

$buttoncontext = GUICtrlCreateContextMenu($Button1)
GUICtrlCreateMenuItem("меню кнопки", $buttoncontext)

$context = GUICtrlCreateContextMenu(-1)
GUICtrlCreateMenuItem("меню GUI", $context)

GUISetState ()
_SendMessageA(GUICtrlGetHandle($Button1), $WM_RBUTTONDOWN)
_SendMessageA(GUICtrlGetHandle($Button1), $WM_RBUTTONUP)

While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case -3
			 Exit
	EndSwitch
WEnd
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
В "Send Key list" вроде ничего подобного нет
Почему же? Стандартно заменяет нажатие правой клавиши мыши для вызова меню "Клавиша Windows App":
Код:
Send("{APPSKEY}")
 
Автор
S

shmel

Новичок
Сообщения
5
Репутация
0
WSWR, спасибо, то что нужно. Не знал что это клавиша APPSKEY.
AZJIO, выключи мозг, он перегрелся :smile:.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
shmel [?]
Shift + F10 не подходит, нужно именно нажатие правой кнопки мыши
А разница в чём? :scratch:
Правую кнопку мышки нажимиают так:

Код:
MouseClick("secondary")
;или так
MouseClick("menu")
 
Автор
S

shmel

Новичок
Сообщения
5
Репутация
0
Разница между кнопкой {APPSKEY} и комбинацией +{F10} в том, что в комбинации участвует клавиша SHIFT. А удержание SHIFT добавляет в контекстное меню новые пункты. Так, например, происходит в проводнике. Ну и в той программе, для которой я делаю скрипт. Поэтому хотелось бы иметь возможность писать скрипт для двух вариантов меню, обычном (без SHIFT) и расширенном (с SHIFT).

Про MouseClick() знаю. Им целится надо, а мне проще на фокусном элементе меню вызвать с помощью Send().
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
shmel [?]
удержание SHIFT добавляет в контекстное меню новые пункты. Так, например, происходит в проводнике
Какие пункты? первый раз слышу, можно скриншот с различиями?
 
Автор
S

shmel

Новичок
Сообщения
5
Репутация
0
Удерживание SHIFT (и не только) вообще часто используется при кликах мышки. Вот некоторые комбинации в Windows:
SHIFT + Щелчок правой кнопкой мышки - Открывает контекстное меню, содержащее дополнительные пункты;
SHIFT + Двойной щелчок правой кнопкой мышки - Выполняет альтернативную команду (обычно второй пункт в контекстном меню);
ALT + Двойной щелчок правой кнопкой мышки - Открывает окно свойств объекта;
DELETE - Удаляет объект;
SHIFT + DELETE - Удаляет объект без помещения его в корзину;
SHIFT + F10 - Открывает контекстное меню выделенного объекта. Нажатие этих клавиш эквивалентно правому щелчку мышки на файле;
(и т.д.)
Справа меню с шифтом.
1.png
2.png
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
madmasles [?]
Спасибо, узнал полезную информацию. Правда до меня не дошло, зачем в системе нужна эта функция с зажатым Shift, тем более что не все об этом знают.


shmel [?]
Вот некоторые комбинации в Windows
Судя по этому (там даже так и написано), Shift + 10 равен ПКМ?

Справа меню с шифтом
При клике мышкой, верно?
а при Shift с F10?

Я просто немогу проверить, у меня меню одинаковые при любом раскладе.
 
Автор
S

shmel

Новичок
Сообщения
5
Репутация
0
до меня не дошло, зачем в системе нужна эта функция с зажатым Shift, тем более что не все об этом знают.
Это для продвинутых пользователей. Не все пользователи знают, что есть скрытые файлы и можно включить их отображение. И хорошо, что не знают.
Судя по этому (там даже так и написано), Shift + 10 равен ПКМ?
Это я нагуглил. Это взято не с сайта майкрософт. Но я думаю, что В ОБЩЕМ написано правильно.
При клике мышкой, верно? а при Shift с F10?
При SHIFT + F10 также как и при SHIFT + Правая кнопка мыши.
 
Верх