1 (изменено: Viruzober, 2017-07-13 15:53:45)

Тема: AHK: Развернуть любое окно.

Есть скрипт разворачивания любого окна, но он работает только по нажатию клавиши. Как сделать чтобы работал без нажатия, и в фоне не светился в трее? Вот сам скрипт.

Post's attachments

winsupermaximize-1.01.zip 193.31 kb, 5 downloads since 2017-07-13 

You don't have the permssions to download the attachments of this post.

2

Re: AHK: Развернуть любое окно.

А что мешает разместить здесь исходный код?

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

3 (изменено: svoboden, 2017-07-13 18:03:13)

Re: AHK: Развернуть любое окно.

Чтобы не "светился" в трее - для этого директива #NoTrayIcon есть. А насчет, чтобы работал без нажатия, а какой смысл разворачивать автоматически все окна на весь экран?

4

Re: AHK: Развернуть любое окно.

teadrinker

/*
 * BoD winsupermaximize v1.01.
 *
 * This program and its source are in the public domain.
 * Contact BoD@JRAF.org for more information.
 *
 * Version history:
 * 2008-05-12: v1.01
 * 2008-05-10: v1.00
 */

#SingleInstance ignore

/*
 * Tray menu.
 */
Menu, tray, NoStandard
Menu, tray, Add, Super maximize window, menuSuperMaximize
Menu, tray, Add, About..., menuAbout
Menu, tray, Add, Exit, menuExit
Menu, tray, Default, Super maximize window

/*
 * Bind to Win-F11.
 */
#F11::superMaximize()


menuAbout:
	MsgBox, 8256, About, BoD winsupermaximize v1.01.`n`nThis program and its source are in the public domain.`nContact BoD@JRAF.org for more information.
return

menuExit:
	ExitApp
return

menuSuperMaximize:
	Send !{Tab} ; go to previously active window (the currently active window is the taskbar !)
	Sleep, 200
	superMaximize()
return


/*
 * Super Maximizes the currently active window.
 */
superMaximize() {
	global

	WinActive("A")
	WinGet, winId, ID

	if (isSuperMaximized_%winId% = 1) {
		; already supermaximized: we restore the window
		WinSet, Style, +0x800000
		WinMove, , , orig_%winId%_x, orig_%winId%_y, orig_%winId%_width, orig_%winId%_height
		if (orig_%winId%_wasMaximized) {
			WinMaximize
		}
		isSuperMaximized_%winId% = 0
	} else {
		; not supermaximized: we supermaximize it
		WinGet, orig_%winId%_wasMaximized, MinMax
		if (orig_%winId%_wasMaximized = 1) {
			WinRestore
		}
		WinGetPos, orig_%winId%_x, orig_%winId%_y, orig_%winId%_width, orig_%winId%_height ; store the old bounds
		WinSet, Style, -0x800000
		WinMove, , , 0, -4, A_ScreenWidth, A_ScreenHeight + 4 - 1 ; 1 pixel less, to be able to use the auto-hide taskbar
		isSuperMaximized_%winId% = 1
	}
}

5

Re: AHK: Развернуть любое окно.

svoboden За директиву Спасибо. Приведение окна к статичной позиции. Нужно это для создания скриптов доступности для программ чтения экрана. nvda jaws.

6 (изменено: stealzy, 2017-07-13 19:08:59)

Re: AHK: Развернуть любое окно.

По простому - делаем цикл, а лучше - таймер, где (проверяем состояние активного окна, и если неразвернуто) разворачиваем активное окно.
По сложному - через оконные хуки (пользуюсь как раз таким способом для максимизации окон, но только для окон справок .chm).

7 (изменено: teadrinker, 2017-07-13 19:39:05)

Re: AHK: Развернуть любое окно.

Viruzober пишет:

Как сделать чтобы работал без нажатия

А как должен работать-то?

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

8

Re: AHK: Развернуть любое окно.

Я так понимаю только по факту создания окна. Типа HSHELL_WINDOWCREATED для SHELLHOOK, и проверка на то что окно родительское.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

9

Re: AHK: Развернуть любое окно.

В смысле, по факту создания? Сразу разворачивать любое окно?

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

10

Re: AHK: Развернуть любое окно.

Ну да, если оно "новое".

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

11

Re: AHK: Развернуть любое окно.

Не знаю, наверно, для всех окон это не нужно. Другое дело, если окно создаётся уже максимизированным. Но и то, не для любого это будет хорошо, нужно тогда список нужных окон создавать, либо список исключений.

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

12

Re: AHK: Развернуть любое окно.

teadrinker пишет:

наверно, для всех окон это не нужно.

Ну я задачу минимум пытался сформулировать,
новичков часто тяжело понять.

Viruzober пишет:

разворачивания любого окна

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

13

Re: AHK: Развернуть любое окно.

teadrinker Нужно это для всех окон чтобы наверняка зафиксировать позиции на экране. Этот скрипт то что нужно. Надо только убрать клавишу. чтобы он висел в фоне, и разворачивал любое окно. В конце концов если можете помочь, то помогите, а обсуждать зачем и почему нет смысла. Этот скрипт писался же зачем-то, а раз написан, значит нужен. Или предложите альтернативу. прошу заметить что этот скрипт умеет разворачивать окна в которых  вообще нет такой возможности.

14

Re: AHK: Развернуть любое окно.

Тогда подойдёт, как предложил serzh82saratov, ему и карты в руки.

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

15

Re: AHK: Развернуть любое окно.

Viruzober пишет:

обсуждать зачем и почему нет смысла.

Это вы зря, написать код мы наверное сможем, но если вы так настроены, то переписывать его 10 раз ни у кого вероятно не возникнет желания...

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

16

Re: AHK: Развернуть любое окно.

serzh82saratovЯ то чайник пока в AHK. поэтому спасибо. Мне казалось что проще убрать там клавишу, чем переписывать все. Тем более как вы понимаете скрипт не мой.

17

Re: AHK: Развернуть любое окно.

Viruzober, вот окна типа разных уведомлений или подсказок, ToolTip, например. Вам нужно, чтобы они разворачивались на весь экран?

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

18

Re: AHK: Развернуть любое окно.

teadrinker Да. Потому что с тем чем я собираюсь это использовать, разворачивать надо все. я думаю никто не захочет собирать данные о паре сотен окон. проще развернуть все. к тому же конечным   пользователям того что должно получится вообще не важно что там и как разворачивается. Ибо они  этого все равно не увидят в силу физических ограничений.

19

Re: AHK: Развернуть любое окно.

Viruzober пишет:

Мне казалось что проще убрать там клавишу, чем переписывать все

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

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

20

Re: AHK: Развернуть любое окно.

serzh82saratov Нужно просто убрать нажатие клавиши. запустил скрипт, и любое окно которое оказалось в фокусе, развернулось. не важно какое, хоть предупреждение, хоть уведомление, хоть пластиковое со звукоизоляцией.

21

Re: AHK: Развернуть любое окно.

#SingleInstance Force
#NoEnv
#NoTrayIcon
DllCall("RegisterShellHookWindow", "Ptr", A_ScriptHwnd)
OnMessage(DllCall("RegisterWindowMessage", "Str", "SHELLHOOK"), "ShellProc")

ShellProc(nCode, wParam)    {
	Static HSHELL_WINDOWACTIVATED := 4 
    If (nCode = HSHELL_WINDOWACTIVATED)
    {
		WinMaximize, A ; можно заменить на свой алгоритм разворачивания
	}
}
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

22

Re: AHK: Развернуть любое окно.

Про пластиковое вы всё же зря. У нас тут в основном про всякие коды.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

23

Re: AHK: Развернуть любое окно.

serzh82saratov Похоже у меня руки не из того места. потому что не работает. запускаю, и ничего не разворачивается. Причем даже  те окна в которых это предусмотрено. а как бы алгоритм из того скрипта перенести в ваш?

24

Re: AHK: Развернуть любое окно.

Наверняка руки не причём. Просто в этот раз не получится. ОС может другая, или ещё другая фигня, которую мужики нормальные не обсуждают.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).

25 (изменено: stealzy, 2017-07-14 00:05:44)

Re: AHK: Развернуть любое окно.

Пишу с телефона, увы, но по памяти, я использовал также nCode = 2 (created, им можно и ограничиться), также использовать в команде обращение А сразу после хука иногда рано. Лучше зайдет таймер -200 и обращение по хендлу.