1

Тема: AHK: Показать скрыть окно GUI одной кнопкой.

В представленном ниже коде окно GUI вызывается и скрывается одной кнопкой, но если окно закрыть по средствам ESС или крестика, то для повторного вызова этого окна нужно нажать горячую клавишу два раза, что не очень удобно.
Вопрос в следующем, можно как-то сделать чтобы окно в последствии открывалось с первого раза?

f4::
Gui, 2:+AlwaysOnTop +ToolWindow
Gui, 2:Add, Text,, Привет
Gui, 2:Show, % (b := !b) ? "" : "Hide"
Return
2GuiClose:
2GuiEscape:
	Gui, Destroy
Return

2 (изменено: Nikva, 2016-05-26 17:24:00)

Re: AHK: Показать скрыть окно GUI одной кнопкой.

Gui, 2:+AlwaysOnTop +ToolWindow
Gui, 2:Add, Text,, Привет

f4::
2GuiClose:
2GuiEscape:
Gui, 2:Show, % (b := !b) ? "" : "Hide"
Return

PS: В вашем коде, каждый раз по горячей клавише добавлялся новый элемент GUI text, это может привести к проблемам, например: если будете использовать метки перехода (gLabel) в элементах.

3

Re: AHK: Показать скрыть окно GUI одной кнопкой.

Nikva пишет:

PS: В вашем коде, каждый раз по горячей клавише добавлялся новый элемент GUI text, это может привести к проблемам, например: если будете использовать метки перехода (gLabel) в элементах.

Если я правильно понимаю, то при повторном нажатии окно попросту скрывается, может есть возможность его полностью удалять?

4

Re: AHK: Показать скрыть окно GUI одной кнопкой.

f4::
2GuiClose:
2GuiEscape:
If b {
Gui, 2:Destroy
} Else {
Gui, 2:+AlwaysOnTop +ToolWindow
Gui, 2:Add, Text,, Привет
Gui, 2:Show
}
b := !b
Return

5

Re: AHK: Показать скрыть окно GUI одной кнопкой.

Sgy-x2 пишет:

В представленном ниже коде окно GUI вызывается и скрывается одной кнопкой, но если окно закрыть по средствам ESС или крестика, то для повторного вызова этого окна нужно нажать горячую клавишу два раза, что не очень удобно.
Вопрос в следующем, можно как-то сделать чтобы окно в последствии открывалось с первого раза?

Просто удалите ', % (b := !b) ? "" : "Hide"' из вашего скрипта.

6 (изменено: Sgy-x2, 2016-05-27 16:06:05)

Re: AHK: Показать скрыть окно GUI одной кнопкой.

Nikva пишет:
f4::
2GuiClose:
2GuiEscape:
If b {
Gui, 2:Destroy
} Else {
Gui, 2:+AlwaysOnTop +ToolWindow
Gui, 2:Add, Text,, Привет
Gui, 2:Show
}
b := !b
Return

Спасибо огромное, этот вариант гораздо лучше. Есть ещё небольшая сложность, вот пример

!f2::
2GuiClose:
2GuiEscape:
If b {
Gui, 2:Destroy
} Else {Gui, 2:+AlwaysOnTop +ToolWindow 
Gui, 2:Add, Text, vText01 w50, Пример:
Gui, 2:Add, Edit, vEdit1 w50
Gui, 2:Add, Button, default, Start
Gui, 2:Show
}
b := !b
GuiControl, 2:, Edit1, 0
Return

6ButtonStart:
Gui, 2:Submit

В данном случае, после нажатия старт, окно повторно вызывается двойным нажатием. Можно это решить?

7

Re: AHK: Показать скрыть окно GUI одной кнопкой.

Или не скрывать окно, по нажатии кнопки:

2ButtonStart:
Gui, 2:Submit, NoHide

Или изменять значение переменной:

2ButtonStart:
Gui, 2:Submit
b := !b