1

Тема: AHK: Индикатор на заголовок окна

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

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

2 (изменено: Irbis, 2015-03-10 00:10:22)

Re: AHK: Индикатор на заголовок окна

Подойдет?  Добавить кнопку в произвольное окно.

3 (изменено: Ядрён, 2015-03-10 00:47:59)

Re: AHK: Индикатор на заголовок окна

Уважаемый Irbis нет такое не подойдёт. Потому что кнопки закрытия окна не работают и если произвести клик в любую область заголовка окна то происходит активация "MsgBox".

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

4 (изменено: yalanne, 2015-03-10 14:50:10)

Re: AHK: Индикатор на заголовок окна

вот так подойдет?

#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

5 (изменено: Ядрён, 2015-03-10 05:07:14)

Re: AHK: Индикатор на заголовок окна

Спасибо огромное вам yalanne то что нужно.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

6

Re: AHK: Индикатор на заголовок окна

Пожалуйста. Только там надо поменять ahk_exe notepad.exe на ahk_class Notepad. Что бы только на главном окне ставились кнопки.

7

Re: AHK: Индикатор на заголовок окна

yalanne, кнопки мерцают только на Win10 или этого не избежать?

8 (изменено: Ядрён, 2017-04-21 15:32:59)

Re: AHK: Индикатор на заголовок окна

Доброго времени суток. Вот решил добавить в скрипт кнопочки , но они почему то не реагируют на клик.

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
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

9

Re: AHK: Индикатор на заголовок окна

Ядрён, при запуске Вашего кода даже окно не появляется. Пример yalanne рабочий.

10

Re: AHK: Индикатор на заголовок окна

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

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

11

Re: AHK: Индикатор на заголовок окна

Уважаемый ypppu , у вас не работает мой код из за этой строчки.

IfWinActive ahk_class AkelPad4 ; в моём коде
IfWinActive ahk_class Notepad ; в коде от yalanne
 
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

12

Re: AHK: Индикатор на заголовок окна

#If создает контекстно-чувствительные горячие клавиши [hotkeys] и строки автозамены [hotstrings].
У вас в коде нет ни одного ни второго.

13

Re: AHK: Индикатор на заголовок окна

Уважаемый Malcev , у кнопок есть метка "gButton1"(к примеру), после "Button1:"(в строке ниже) должно выполнятся действие но этого не происходит .

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

14

Re: AHK: Индикатор на заголовок окна

Не должно, так как вы вставили директиву #If.

15 (изменено: Ядрён, 2017-04-22 06:31:58)

Re: AHK: Индикатор на заголовок окна

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
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

16 (изменено: Malcev, 2017-04-22 05:28:59)

Re: AHK: Индикатор на заголовок окна

А вы алгоритм скрипта понимаете?
У вас таймером проверяется активно заданное окно или неактивно, если неактивно, то гуи исчезает (непонятно правда зачем).
У вас при нажатии на кнопку в гуи деактивируется заданное окно, гуи исчезает и соответственно клик не обрабатывется.
Чтобы этого избежать можно гуи задать стиль +E0x08000000 ; WS_EX_NOACTIVATE.

17

Re: AHK: Индикатор на заголовок окна

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

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

18

Re: AHK: Индикатор на заголовок окна

Тут исчезают не кнопки, а гуи.
А гуи обычно исчезает после команды Submit.
В справке об этом всё написано.

19 (изменено: Ядрён, 2017-04-22 06:33:56)

Re: AHK: Индикатор на заголовок окна

Спасибо Вам огромное Malcev , всё рассказали и всё расписали.

+ открыть спойлер

Рабочий код в "15" посту. Я там подправил.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).