Как установить значок AutoHotkey MsgBox на панели задач?

У меня есть несколько горячих клавиш в скрипте с настраиваемым значком на панели задач.

Menu Tray, Icon, my_hotkeys.ico

На одном из них отображается окно сообщения с кнопкой ОК и значком вопросительного знака.

MsgBox, 32, My Hotkeys, Hey, here's some info...

Но у него есть зеленое изображение H AutoHotkey по умолчанию на панели задач Windows. Я просмотрел все варианты меню. И команда GUI утверждает, что использует значок меню, если он установлен. Но я не могу найти ничего конкретного по MsgBox. Есть ли способ изменить значок MsgBox на тот же пользовательский значок, который я использую на панели задач?


person Anthony Mastrean    schedule 24.09.2012    source источник
comment
вы хотите установить значок в трей и использовать тот же для msgbox?   -  person Joe DF    schedule 03.10.2012


Ответы (1)


Есть несколько возможных решений:

  • Создайте и покажите графический интерфейс с +OwnDialogs перед вызовом MsgBox.
  • Создайте свой собственный аналог MsgBox, используя команды Gui.
  • Скомпилируйте свой скрипт (конвертируйте в exe) с настраиваемым значком.
  • Заменить ресурсы значка в AutoHotkey.exe (затрагивает все скрипты).
  • Установите таймер перед отображением MsgBox, а затем отправьте WM_SETICON после его появления.
  • Создание привязки окна MsgBox для установки значка перед отображением окна - пример на C ++.

+ Пример OwnDialogs:

Menu Tray, Icon, shell32.dll, 5  ; Folder icon
Gui +OwnDialogs
Gui Show           ; Since it has zero dimensions, it should be invisible.
MsgBox Testing...
ExitApp
person Lexikos    schedule 04.11.2012
comment
Отличный ответ, спасибо! Но я не смогу сразу попробовать. Держитесь за результаты. Удивительно, что это возможно с обычными окнами и сложными для окон сообщений, это связано с какой-то основной проблемой Windows? - person Anthony Mastrean; 05.11.2012
comment
Ядро MsgBox - это просто вызов Win32 MessageBox (). Он принимает четыре параметра: hWnd (окно владельца), текст, заголовок и тип (параметр MsgBox Options). Невозможно указать значок, и когда вы вызываете функцию, вы отказываетесь от управления; то есть вам нужно использовать обходные пути, такие как публикация сообщения, подключение оконных сообщений или установка таймера, чтобы фактически делать что-либо, пока диалоговое окно отображается. - person Lexikos; 10.11.2012