1

Тема: AHK: Сворачивание/разворачивание окон

Написал вот такой код:

#NoTrayIcon
#Include Autorun.ahk
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetTitleMatchMode, 2
DetectHiddenWindows, On
F12::
IfWinActive, Mozilla Firefox
{	
	WinMinimize ; сворачивание окна
}
else
{
	ifWinExist, Mozilla Firefox
		{
			WinActivate ; активация окна
		}
	else
	{
		Run, C:\Program Files (x86)\Mozilla Firefox\firefox.exe
		WinWait, Яндекс - Mozilla Firefox
		WinActivate
	}
}
return

Который должен по нажатию на F12 запускать браузер, если тот не запущен, в противном случае сворачивать/разворачивать окно.
Код работает без нареканий, но есть проблема: в какой-то момент свернутое окно продолжает оставаться активным(это видно в панели задач), из-за чего развернуть его, не кликнув в любую область экрана, не представляется возможным. Замечу, что происходит это через раз. Нет, не так. Обычно происходит именно так, но иногда свернутое окно перестает быть активным, как и должно.

2

Re: AHK: Сворачивание/разворачивание окон

Используйте вместо WinActivate WinRestore или WinMaximize.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Сворачивание/разворачивание окон

teadrinker
WinRestore делает все еще хуже - исходная проблема не исчезла, а восстанавливается окно "позади" текущего активного окна. Пробовал связку WinRestore+WinActivate, от просто WinActivate ничем не отличается.

4

Re: AHK: Сворачивание/разворачивание окон

У меня так работает:

F11::
	if !WinExist("ahk_class MozillaWindowClass")
		Run firefox
	else  {
		WinGet, state, MinMax
		if (state != -1)
			WinMinimize
		else  {
			WinRestore
			WinActivate
		}
	}
	Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: HepoH, 2016-03-07 20:17:48)

Re: AHK: Сворачивание/разворачивание окон

teadrinker
В общем, сделав такой код, все сдало как работать как надо:

F12::
ifWinExist, Mozilla Firefox
{
	WinGet, state, MinMax
	if (state != -1)
			WinMinimize
		else  {
			WinRestore
			WinActivate
		}
}
else  
{
	Run, C:\Program Files (x86)\Mozilla Firefox\firefox.exe
	WinWait, Яндекс - Mozilla Firefox
	WinActivate

}
Return

Почему то не хотел работать через if !WinExist, новые окна открывались вне зависимости от того, открыто ли старое окно или нет, но это не важно.
Единственное что удручает - скорость выполнения - окно разворачивается позади активного и только потом происходит переключение, что режет глаза. Нельзя ли как-то повысить скорость выполнения скрипта, или это только вопрос производительности компьютера?
P.S. и все же, очень странно это - почему при выполнении одного и того же скрипта, окно сворачивается по-разному - то оставаясь активным, то переключаясь на предыдущее активное окно?

6

Re: AHK: Сворачивание/разворачивание окон

Не знаю, у меня такого не происходит.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder