Тема: AHK: Индикатор на заголовок окна
Доброго времени суток . Подскажите как прикрепить индикатор на полосу заголовка окна блокнота , что бы при клике на индикатор запускался калькулятор.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Доброго времени суток . Подскажите как прикрепить индикатор на полосу заголовка окна блокнота , что бы при клике на индикатор запускался калькулятор.
Уважаемый Irbis нет такое не подойдёт. Потому что кнопки закрытия окна не работают и если произвести клик в любую область заголовка окна то происходит активация "MsgBox".
вот так подойдет?
#Persistent
#NoEnv
settimer tool_bar, 10
Gui, tool_bar:Color, 000111
Gui, tool_bar:+AlwaysOnTop -Caption +ToolWindow +LastFound +HwndGuiHwnd_toolbar
Gui, tool_bar:Add, Picture, w20 h20 Icon22, shell32.dll
Gui, tool_bar:Add, Picture, xp+22 w20 h20 Icon35, shell32.dll
return
#if (GuiHwnd_toolbar=Hwnd_ctrl_cursor)
LButton::
RButton::
MButton::
tooltip % "Нажата " substr(control_ctrl_cursor,-0,1) " иконка`n" ( (A_ThisHotkey = "LButton") ? "левой" : (A_ThisHotkey = "RButton") ? "правой" : "средней" ) " кнопкой мыши."
#If
tool_bar:
MouseGetPos,,,Hwnd_ctrl_cursor,control_ctrl_cursor
IfWinActive ahk_class Notepad
{
WinGetPos X_win,Y_Win,W_Win,,ahk_class Notepad
if (!X_win ? "" : (X_win = X_win_old)) and (!Y_win ? "" : (Y_win = Y_win_old)) and (!W_win ? "" : (W_win = W_win_old))
return
X_win_old := X_win
Y_win_old := Y_win
W_win_old := W_win
X_bar := X_win + W_win -200
Y_bar := Y_win
Gui, tool_bar:show, x%X_bar% y%Y_bar% NA, tool_bar_custom
}
else
{
Gui, tool_bar:Hide
X_win_old := ""
Y_win_old := ""
W_win_old := ""
}
WinSet, Transcolor, 000111, tool_bar_custom
return
Спасибо огромное вам yalanne то что нужно.
Пожалуйста. Только там надо поменять ahk_exe notepad.exe на ahk_class Notepad. Что бы только на главном окне ставились кнопки.
yalanne, кнопки мерцают только на Win10 или этого не избежать?
Доброго времени суток. Вот решил добавить в скрипт кнопочки , но они почему то не реагируют на клик.
SetBatchLines, -1
#SingleInstance force
#Persistent
#NoEnv
SendMode Input
SetBatchLines, -1
#MaxHotkeysPerInterval
#HotkeyInterval, -1
settimer tool_bar, 10
Gui, tool_bar:Color, 000111
Gui, tool_bar:+AlwaysOnTop -Caption +ToolWindow +LastFound +HwndGuiHwnd_toolbar
Gui, tool_bar:Add, Button, x10 y1 w25 h25 gButton1, 1
Gui, tool_bar:Add, Button, x40 y1 w25 h25 gButton2, 2
Gui, tool_bar:Add, Button, x70 y1 w25 h25 gButton3, 3
Gui, tool_bar:Add, Button, x100 y1 w25 h25 gButton4, 4
Gui, tool_bar:Add, Button, x130 y1 w25 h25 gButton5, 5
return
#if (GuiHwnd_toolbar=Hwnd_ctrl_cursor)
Button1:
SendInput, {vk31}
#If
Return
#if (GuiHwnd_toolbar=Hwnd_ctrl_cursor)
Button2:
SendInput, {vk32}
#If
Return
#if (GuiHwnd_toolbar=Hwnd_ctrl_cursor)
Button3:
SendInput, {vk33}
#If
Return
#if (GuiHwnd_toolbar=Hwnd_ctrl_cursor)
Button4:
SendInput, {vk34}
#If
Return
#if (GuiHwnd_toolbar=Hwnd_ctrl_cursor)
Button5:
SendInput, {vk35}
#If
Return
tool_bar:
MouseGetPos,,,Hwnd_ctrl_cursor,control_ctrl_cursor
IfWinActive ahk_class AkelPad4
{
WinGetPos X_win,Y_Win,W_Win,,ahk_class AkelPad4
if (!X_win ? "" : (X_win = X_win_old)) and (!Y_win ? "" : (Y_win = Y_win_old)) and (!W_win ? "" : (W_win = W_win_old))
return
X_win_old := X_win
Y_win_old := Y_win
W_win_old := W_win
H_win_old := H_win
X_bar := X_win + W_win -850
Y_bar := Y_win
Gui, tool_bar:show, x%X_bar% y%Y_bar% NA, tool_bar_custom
}
else
{
Gui, tool_bar:Hide
X_win_old := ""
Y_win_old := ""
W_win_old := ""
}
WinSet, Transcolor, 000111, tool_bar_custom
return
Ядрён, при запуске Вашего кода даже окно не появляется. Пример yalanne рабочий.
ypppu , у меня код работает и кнопки появляются, только кнопки не реагируют на клик.
Уважаемый ypppu , у вас не работает мой код из за этой строчки.
IfWinActive ahk_class AkelPad4 ; в моём коде
IfWinActive ahk_class Notepad ; в коде от yalanne
#If создает контекстно-чувствительные горячие клавиши [hotkeys] и строки автозамены [hotstrings].
У вас в коде нет ни одного ни второго.
Уважаемый Malcev , у кнопок есть метка "gButton1"(к примеру), после "Button1:"(в строке ниже) должно выполнятся действие но этого не происходит .
Не должно, так как вы вставили директиву #If.
Malcev , я убрал директиву "#If " и всё равно не работает.
#Persistent
#NoEnv
settimer tool_bar, 10
Gui, tool_bar:Color, 000111
Gui, tool_bar:+AlwaysOnTop -Caption +ToolWindow +LastFound +HwndGuiHwnd_toolbar +E0x08000000
Gui, tool_bar:Add, Button, x10 y1 w25 h25 gButton1, 1
Gui, tool_bar:Add, Button, x40 y1 w25 h25 gButton2, 2
Gui, tool_bar:Add, Button, x70 y1 w25 h25 gButton3, 3
Gui, tool_bar:Add, Button, x100 y1 w25 h25 gButton4, 4
Gui, tool_bar:Add, Button, x130 y1 w25 h25 gButton5, 5
return
Button1:
SendInput, {vk31}
Return
Button2:
SendInput, {vk32}
Return
Button3:
SendInput, {vk33}
Return
Button4:
SendInput, {vk34}
Return
Button5:
SendInput, {vk35}
Return
tool_bar:
MouseGetPos,,,Hwnd_ctrl_cursor,control_ctrl_cursor
IfWinActive ahk_class AkelPad4
{
WinGetPos X_win,Y_Win,W_Win,,ahk_class AkelPad4
if (!X_win ? "" : (X_win = X_win_old)) and (!Y_win ? "" : (Y_win = Y_win_old)) and (!W_win ? "" : (W_win = W_win_old))
return
X_win_old := X_win
Y_win_old := Y_win
W_win_old := W_win
H_win_old := H_win
X_bar := X_win + W_win -850
Y_bar := Y_win
Gui, tool_bar:show, x%X_bar% y%Y_bar% NA, tool_bar_custom
}
else
{
Gui, tool_bar:Hide
X_win_old := ""
Y_win_old := ""
W_win_old := ""
}
WinSet, Transcolor, 000111, tool_bar_custom
Return
А вы алгоритм скрипта понимаете?
У вас таймером проверяется активно заданное окно или неактивно, если неактивно, то гуи исчезает (непонятно правда зачем).
У вас при нажатии на кнопку в гуи деактивируется заданное окно, гуи исчезает и соответственно клик не обрабатывется.
Чтобы этого избежать можно гуи задать стиль +E0x08000000 ; WS_EX_NOACTIVATE.
Malcev , нет не понимаю алгоритм скрипта. А как сделать чтобы кнопки не исчезали после нажатия. Помогите пожалуйста.
Тут исчезают не кнопки, а гуи.
А гуи обычно исчезает после команды Submit.
В справке об этом всё написано.
Спасибо Вам огромное Malcev , всё рассказали и всё расписали.
Рабочий код в "15" посту. Я там подправил.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться