Разобрался-таки с тем, что делает скрипт.
Куда интересней мне показался скрипт от kirtech.
Вот по нему есть пара вопросов:
1. как конкретно у этой кнопки и как вообще в AutoHotkey можно (ли?) задавать позицию не от левого верхнего угла окна?
Поясню, для чего: если тем скриптом создать в окне 500х500пикс кнопку в самом низу, а потом ресайзнуть окно за нижнюю границу, потянув её вверх (и тем самым уменьшив размер окна) - то кнопка исчезнет из зоны видимости. А хочется, чтобы её позиция была как у, скажем, какого-то статусбара, который виден всегда.
У меня есть идея, только через запуск Loop с какой-то периодичность перерисовывать кнопку, но этот вариант мне не нравится.
2. Для чего в этом скрипте нужно:
? И почему длина переменной выбрана равной именно восьми? В хэлпе как-то не очень понятно ссылаются на то, что эта команда используется обычно при DllCall (который я пока ещё не освоил), но не понятно зачем.
3. Где можно найти список функций для DllCall? Без него не понятно что вот эти строки делают:
DllCall("GetCursorPos","uint",&pt)
DllCall("ScreenToClient","uint",hParentWnd,"uint",&pt)
DllCall("SetParent","uint",hgui,"uint",hParentWnd)
4. Читал мануалы по команде GUI, но так и не понял - умеет ли AHK назначать картинку вместо текста создаваемым кнопкам?
5. Как правильно переделать скрипт так, чтобы кнопка добавлялась не по хоткею, а при появлении окна?
У меня есть только такая идея:
WinWait, specific_window
hParentWnd:=WinExist("specific_window")
но это сработает только однажды и если окно закрыть и потом снова открыть, то кнопка уже не пририсуется заново, а хотелось бы.
Как тут быть?
Правильно ли я предполагаю, что нужно тогда весь код по добавлению кнопки положить во внутрь какой-то метки start, чтобы можно было потом
WinWaitClose, specific_window
goto/gosub start
?
6. Можно ли как-то избежать того, что при клике по добавленной кнопке, окно, к которому она была добавлена - теряет фокус? Можно конечно в метку, которая отвечает за выполнение кода при нажатии на кнопку, добавить в начало команду "WinActivate родительское окно", но если по кнопке нажать и не отпускать - то родительское окно потеряет фокус, т.е. фокус хоть на время, но теряется. Можно ли этого избежать?
7. У меня есть скрипт который скрывает/восстанавливает активному окну заголовок (title bar), так вот созданная вышеприведённым скриптом кнопка по сути находится внутри своего собственного окна, и ей тоже получается восстановить заголовок (и при этом происходит баг, что кнопка смещается), можно ли это как-то запретить насовсем?