1

Тема: AHK: Как вызвать трей меню другого скрипта?

У каждого скрипта есть иконка в трее (даже если её нет).
При ПКМ клике по иконке скрипта в трее показывается меню.
Как вызвать это меню из другого скрипта?

Вроде как, ещё сто лет назад это уже было сделано lexikos'ом в AHKControl и, возможно, SKAN'ом в The Handy TNA Menu for AHK, но оба устарели за давностью лет и не совместимы со свежим AHK.
Я пытался разобраться в их кодах, но так и не нашёл, как же они вызывали эти меню других скриптов.
В AHKControl имеется такой кусок

ShowScriptTrayMenu(hWnd)
{
    PostMessage, 1028, 0, 0x204, , ahk_id %hWnd% ; WM_RBUTTONDOWN
    PostMessage, 1028, 0, 0x205, , ahk_id %hWnd% ; WM_RBUTTONUP
}

но у меня он не вызывает трей меню.
И да, я в курсе, что если трей меню скрипта не было изменено, то можно нарисовать своё аналогичное меню, где каждый пункт будет отсылать

 wParam := 65300	; 65300 - open, 65303 - reload, 65304 - edit, 65305 - suspend hotkeys, 65306 - pause script, 65307 - exit.
PostMessage, 0x111, wParam,,, wintitle

но это не то, что мне надо.

2

Re: AHK: Как вызвать трей меню другого скрипта?

Menu, Tray, Show

Остаётся только передать скрипту, чтобы он выполнил эту команду.

3

Re: AHK: Как вызвать трей меню другого скрипта?

teadrinker писал - до сих пор пользуюсь:
http://forum.script-coding.com/viewtopi … 349#p97349

4

Re: AHK: Как вызвать трей меню другого скрипта?

ypppu
Решение через внесение изменений в другие скрипты - мне не подходит (хоть я об этом и не упомянул раньше).

Malcev
Спасибо, работает, но только если иконка не спрятана (через DllCall("Shell_NotifyIcon"…), #NoTrayIcon или Menu, Tray, NoIcon).
Хотелось бы, чтоб и у скриптов со спрятанной иконкой можно было вызывать трэй меню…

5

Re: AHK: Как вызвать трей меню другого скрипта?

Если именно для AHK-скрипта, то так:

ScriptName := "MyScript.ahk"  ; указать название файла скрипта

AHK_NOTIFYICON := 0x404
WM_RBUTTONDOWN := 0x204
WM_RBUTTONUP := 0x205

DetectHiddenWindows, On
SetTitleMatchMode, 2
PostMessage, AHK_NOTIFYICON,, WM_RBUTTONDOWN,, % ScriptName
PostMessage, AHK_NOTIFYICON,, WM_RBUTTONUP,, % ScriptName
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Как вызвать трей меню другого скрипта?

teadrinker, спасибо!
Получается я просто в тестах запутался и забыл включить DetectHiddenWindows