1

Тема: AHK: Скрытие панели меню

Сценарий переключает видимость стандартной панели меню активного окна. Минус: если скрыть панель меню и перезагрузить скрипт, то переключение не работает. Т.е. необходимо переоткрыть окно программы. Можно ли это исправить?
Можно ли скрыть панель меню таким образом, чтобы оставалась возможность вызова пункта меню командой WinMenuSelectItem? Например, не скрывать панель, а развернув окно на весь экран, вынести панель меню за пределы видимости экрана вместе с заголовком окна.

^f12::
	ToggleMenu( WinExist("A") )
return

ToggleMenu( hWin )
{
	static hMenu, visible
	if hMenu =
		hMenu := DllCall("GetMenu", "uint", hWin)
	
	if !visible
			DllCall("SetMenu", "uint", hWin, "uint", hMenu)
	else	DllCall("SetMenu", "uint", hWin, "uint", 0)

	visible := !visible
}

2 (изменено: serzh82saratov, 2016-05-15 20:56:05)

Re: AHK: Скрытие панели меню

Можно ли скрыть панель меню таким образом, чтобы оставалась возможность вызова пункта меню командой WinMenuSelectItem?

Не знаю как.

развернув окно на весь экран

Примерно так для главного монитора:


1::FullScreenMode()

FullScreenMode() {
	Static O := {}
	hWnd := WinExist("A")
	WinGet, Style, Style
	If (Style & 0x00C00000)  ; WS_CAPTION
	{
		WinGetPos, X, Y, Width, Height
		O[hWnd] := {X:X,Y:Y,Width:Width,Height:Height}
		WinSet, Style, -0x00C00000			; WS_CAPTION
		WinSet, Style, -0x00040000			; WS_SIZEBOX
		WinSet, Style, +0x80000000			; WS_POPUP
		SysGet, SM_CYMENU, 15 
		WinSet, Region, % "0-" SM_CYMENU " w" A_ScreenWidth " h" A_ScreenHeight
		WinMove, , , 0, -SM_CYMENU, A_ScreenWidth, A_ScreenHeight + SM_CYMENU
		WinSet, AlwaysOnTop, On
	}
	Else
	{
		WinSet, Region
		WinSet, Style, +0x00C00000
		WinSet, Style, +0x00040000
		WinMove, , , O[hWnd].X, O[hWnd].Y, O[hWnd].Width, O[hWnd].Height 
		WinSet, AlwaysOnTop, Off
	}
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Скрытие панели меню

Так лучше дружит с окнами которые максимизированы перед развёртыванием, но мелькает в таких случаях.


1::FullScreenMode()

FullScreenMode() {
	Static O := {}
	hWnd := WinExist("A")
	WinGet, Style, Style
	If (Style & 0x00C00000)  ; WS_CAPTION
	{ 
		WinGet, MinMax, MinMax
		If MinMax = 1
			WinRestore
		WinGetPos, X, Y, Width, Height
		O[hWnd] := {MinMax:MinMax,X:X,Y:Y,Width:Width,Height:Height}
		WinSet, Style, -0x00C00000			; WS_CAPTION
		WinSet, Style, -0x00040000			; WS_SIZEBOX
		WinSet, Style, +0x80000000			; WS_POPUP
		SysGet, SM_CYMENU, 15 
		WinSet, Region, % "0-" SM_CYMENU " w" A_ScreenWidth " h" A_ScreenHeight
		WinMove, , , 0, -SM_CYMENU, A_ScreenWidth, A_ScreenHeight + SM_CYMENU
		WinSet, AlwaysOnTop, On
	}
	Else
	{
		WinSet, Region
		WinSet, Style, +0x00C00000
		WinSet, Style, +0x00040000
		WinMove, , , O[hWnd].X, O[hWnd].Y, O[hWnd].Width, O[hWnd].Height
		If (O[hWnd].MinMax = 1)
			PostMessage, 0x112, 0xF030   ; 0x112 = WM_SYSCOMMAND, 0xF030 = SC_MAXIMIZE
		WinSet, AlwaysOnTop, Off
	}
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Скрытие панели меню

serzh82saratov, Спасибо! Второй вариант лучше, т.к. первый вариант некорректно срабатывает при обратном масштабировании, а именно панель задач перекрывает нижнюю часть окна при возвращении панели меню. Но главное, что работает WinMenuSelectItem. Если получится изменить во втором варианте анимацию масштабирования, т.е. убрать мелькание, то будет просто великолепно. Может, кто-то еще из разработчиков дополнит труды serzh82saratov?

5 (изменено: serzh82saratov, 2016-05-15 21:23:57)

Re: AHK: Скрытие панели меню


1::FullScreenMode()

FullScreenMode() {
	Static O := {}
	hWnd := WinExist("A")
	WinGet, Style, Style
	If (Style & 0x00C00000) 				; WS_CAPTION
	{ 
		WinGet, MinMax, MinMax
		If MinMax = 1
			WinSet, Style, -0x1000000		; WS_MAXIMIZE
		WinGetPos, X, Y, Width, Height
		O[hWnd] := {MinMax:MinMax,X:X,Y:Y,Width:Width,Height:Height}
		WinSet, Style, -0x00C00000			; WS_CAPTION
		WinSet, Style, -0x00040000			; WS_SIZEBOX
		WinSet, Style, +0x80000000			; WS_POPUP
		SysGet, SM_CYMENU, 15 
		WinSet, Region, % "0-" SM_CYMENU " w" A_ScreenWidth " h" A_ScreenHeight
		WinMove, , , 0, -SM_CYMENU, A_ScreenWidth, A_ScreenHeight + SM_CYMENU
		WinSet, AlwaysOnTop, On
	}
	Else
	{
		WinSet, Region
		WinSet, Style, +0x00C00000
		WinSet, Style, +0x00040000
		WinMove, , , O[hWnd].X, O[hWnd].Y, O[hWnd].Width, O[hWnd].Height
		If (O[hWnd].MinMax = 1)
			PostMessage, 0x112, 0xF030   ; 0x112 = WM_SYSCOMMAND, 0xF030 = SC_MAXIMIZE
		WinSet, AlwaysOnTop, Off
	}
}

Так не мелькает, но прежние размеры окна не восстанавливаются.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6 (изменено: serzh82saratov, 2016-05-15 23:43:52)

Re: AHK: Скрытие панели меню

Сохраняет размеры, вроде без ошибок.


1::FullScreenMode()

FullScreenMode() {
	Static O := []
	hWnd := WinExist("A")
	WinGet, Style, Style
	If (Style & 0x00C00000)  ; WS_CAPTION
	{ 
		WinGetNormalPos(hWnd, X, Y, W, H) 
		WinGet, M, MinMax
		WinSet, Style, -0x00C00000			; WS_CAPTION
		WinSet, Style, -0x00040000			; WS_SIZEBOX
		WinSet, Style, +0x80000000			; WS_POPUP
		SysGet, SM_CYMENU, 15
		WinSet, Region, % "0-" SM_CYMENU " w" A_ScreenWidth " h" A_ScreenHeight
		WinMove, , , 0, -SM_CYMENU, A_ScreenWidth, A_ScreenHeight + SM_CYMENU 
		O[hWnd] := {M:M,X:X,Y:Y,W:W,H:H} 
		WinSet, AlwaysOnTop, On
	}
	Else
	{ 
		WinSet, Region
		WinSet, Style, +0x00C00000
		WinSet, Style, +0x00040000
		If (O[hWnd].M = 1)
		{
			WinSet, Style, -0x1000000		; WS_MAXIMIZE
			WinMaximize
		}
		WinSetNormalPos(hWnd, O[hWnd].X, O[hWnd].Y, O[hWnd].W, O[hWnd].H)
		WinSet, AlwaysOnTop, Off
	}
}

WinGetNormalPos(hwnd, ByRef x, ByRef y, ByRef w, ByRef h)  { 
    VarSetCapacity(wp, 44), NumPut(44, wp) 
    DllCall("GetWindowPlacement", "Ptr", hwnd, "Ptr", &wp) 
    x := NumGet(wp, 28, "int"), y := NumGet(wp, 32, "int") 
    w := NumGet(wp, 36, "int") - x,  h := NumGet(wp, 40, "int") - y
}

WinSetNormalPos(hwnd, x, y, w, h)  { 
	VarSetCapacity(wp, 44, 0), NumPut(44, wp, 0, "uint") 
	DllCall("GetWindowPlacement", "Ptr", hWnd, "Ptr", &wp) 
	NumPut(x, wp, 28, "int"), NumPut(y, wp, 32, "int")
	NumPut(w + x, wp, 36, "int"), NumPut(h + y, wp, 40, "int") 
	DllCall("SetWindowPlacement", "Ptr", hWnd, "Ptr", &wp)	
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Скрытие панели меню

serzh82saratov, последний вариант работает лучше всего. Спасибо!

Заметил такую особенность, что если скрывать меню из состояния, когда окно развернуто во весь экран, то остается пиксельная линия сверху. Если же скрывать меню из произвольного размера окна программы - то оно также разворчивается во весь экран со скрытой панелью меню и заголовком окна, но уже без всякой пиксельной линии. По крайне мере, это заметно при работе с окном программы Premiere Pro на экране ноутбука с разрешением 2048х1152.

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

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

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

8

Re: AHK: Скрытие панели меню

остается пиксельная линия сверху

Наверное от окон зависит, так попробуйте:

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

#SingleInstance Force
#NoEnv

1::FullScreenMode()

FullScreenMode() {
	Static O := []
	hWnd := WinExist("A")
	WinGet, Style, Style
	If (Style & 0x00C00000)  ; WS_CAPTION
	{ 
		WinGetNormalPos(hWnd, X, Y, W, H) 
		WinGet, M, MinMax 
		WinSet, Style, -0x1000000		; WS_MAXIMIZE
		WinSet, Style, -0x00C00000			; WS_CAPTION
		WinSet, Style, -0x00040000			; WS_SIZEBOX
		WinSet, Style, +0x80000000			; WS_POPUP
		SysGet, SM_CYMENU, 15
		WinSet, Region, % "0-" SM_CYMENU " w" A_ScreenWidth " h" A_ScreenHeight
		WinMove, , , 0, -SM_CYMENU, A_ScreenWidth, A_ScreenHeight + SM_CYMENU 
		O[hWnd] := {M:M,X:X,Y:Y,W:W,H:H} 
		WinSet, AlwaysOnTop, On
	}
	Else
	{ 
		WinSet, Region
		WinSet, Style, +0x00C00000
		WinSet, Style, +0x00040000
		If (O[hWnd].M = 1)
		{
			WinSet, Style, -0x1000000		; WS_MAXIMIZE
			WinMaximize
		}
		WinSetNormalPos(hWnd, O[hWnd].X, O[hWnd].Y, O[hWnd].W, O[hWnd].H)
		WinSet, AlwaysOnTop, Off
	}
}

WinGetNormalPos(hwnd, ByRef x, ByRef y, ByRef w, ByRef h)  { 
    VarSetCapacity(wp, 44), NumPut(44, wp) 
    DllCall("GetWindowPlacement", "Ptr", hwnd, "Ptr", &wp) 
    x := NumGet(wp, 28, "int"), y := NumGet(wp, 32, "int") 
    w := NumGet(wp, 36, "int") - x,  h := NumGet(wp, 40, "int") - y
}

WinSetNormalPos(hwnd, x, y, w, h)  { 
	VarSetCapacity(wp, 44, 0), NumPut(44, wp, 0, "uint") 
	DllCall("GetWindowPlacement", "Ptr", hWnd, "Ptr", &wp) 
	NumPut(x, wp, 28, "int"), NumPut(y, wp, 32, "int")
	NumPut(w + x, wp, 36, "int"), NumPut(h + y, wp, 40, "int") 
	DllCall("SetWindowPlacement", "Ptr", hWnd, "Ptr", &wp)	
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Скрытие панели меню

serzh82saratov, не помогло. А что если перед скрытием окна установить окну произволный размер, но равный параметрам моего дисплея? Т.е. произвольно задать окну высоту и ширину моего дисплея, визуально это должно быть равноценно окну, развернутому во весь экран без скрытия элементов. При помощи команды WinMove, у меня, почему-то, не получилось это сделать. Размер меняется, но выглядит это иначе, а именно, остается пространство с боковых сторон.

10

Re: AHK: Скрытие панели меню

+ Так как?

#SingleInstance Force
#NoEnv

1::FullScreenMode() 

FullScreenMode(Menu = 0) {
	Static O := []
	hWnd := WinExist("A")
	WinGet, Style, Style
	If (Style & 0x00C00000)
	{ 
		WinGetNormalPos(hWnd, X, Y, W, H) 
		WinGet, M, MinMax
		If M = 1
		{
			WinGetPos, wX, wY, wW, wH
			WinMove, , , wX, wY, wW, wH
		}
		; WinSet, Style, -0x1000000			; WS_MAXIMIZE
		WinSet, Style, -0x00C00000			; WS_CAPTION
		WinSet, Style, -0x00040000			; WS_SIZEBOX
		WinSet, Style, +0x80000000			; WS_POPUP
		If !Menu
		{
			SysGet, SM_CYMENU, 15
			WinSet, Region, % "0-" SM_CYMENU " w" A_ScreenWidth " h" A_ScreenHeight
			WinMove, , , 0, -SM_CYMENU, A_ScreenWidth, A_ScreenHeight + SM_CYMENU 
		}
		Else
			WinMove, , , 0, 0, A_ScreenWidth, A_ScreenHeight 
		O[hWnd] := {M:M,X:X,Y:Y,W:W,H:H} 
		WinSet, AlwaysOnTop, On
		; WinSetNormalPos(hWnd, X, Y, W, H)
	}
	Else
	{ 
		WinSet, Region
		WinSet, Style, +0x00C00000
		WinSet, Style, +0x00040000
		If (O[hWnd].M = 1)
		{
			WinSet, Style, -0x1000000		; WS_MAXIMIZE
			WinMaximize
		}
		WinSetNormalPos(hWnd, O[hWnd].X, O[hWnd].Y, O[hWnd].W, O[hWnd].H)
		WinSet, AlwaysOnTop, Off 
	}
}
 

WinGetNormalPos(hwnd, ByRef x, ByRef y, ByRef w, ByRef h)  { 
    VarSetCapacity(wp, 44), NumPut(44, wp) 
    DllCall("GetWindowPlacement", "Ptr", hwnd, "Ptr", &wp) 
    x := NumGet(wp, 28, "int"), y := NumGet(wp, 32, "int") 
    w := NumGet(wp, 36, "int") - x,  h := NumGet(wp, 40, "int") - y
}

WinSetNormalPos(hwnd, x, y, w, h)  { 
	VarSetCapacity(wp, 44, 0), NumPut(44, wp, 0, "uint") 
	DllCall("GetWindowPlacement", "Ptr", hWnd, "Ptr", &wp) 
	NumPut(x, wp, 28, "int"), NumPut(y, wp, 32, "int")
	NumPut(w + x, wp, 36, "int"), NumPut(h + y, wp, 40, "int") 
	DllCall("SetWindowPlacement", "Ptr", hWnd, "Ptr", &wp)	
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

Re: AHK: Скрытие панели меню

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

12 (изменено: serzh82saratov, 2016-05-16 01:58:18)

Re: AHK: Скрытие панели меню

Если перед вызовом работы сценария окно развернуто во весь экран, т.е. максимизировано, то при скрытии меню остается линия сверху.

То есть всё также как было?

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

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


#SingleInstance Force
#NoEnv

1::FullScreenMode()
2::FullScreenMode(1)

FullScreenMode(Menu = 0) {
	Static O := []
	hWnd := WinExist("A")
	WinGet, Style, Style
	If (Style & 0x00C00000 || (O[hWnd].Menu != "" && O[hWnd].Menu != Menu))
	{ 
		WinGetNormalPos(hWnd, X, Y, W, H)
		If (Style & 0x00C00000 || O[hWnd].M)
			WinGet, M, MinMax
		If M = 1
		{
			WinGetPos, wX, wY, wW, wH
			WinMove, , , wX, wY, wW, wH
		} 
		WinSet, Style, -0x01000000			; WS_MAXIMIZE 
		WinSet, Style, -0x00C00000			; WS_CAPTION
		WinSet, Style, -0x00040000			; WS_SIZEBOX
		WinSet, Style, +0x80000000			; WS_POPUP
		If (!Menu || (SM_CYMENU := 0))
			SysGet, SM_CYMENU, 15
		WinSet, Region, % "0-" SM_CYMENU " w" A_ScreenWidth " h" A_ScreenHeight
		WinMove, , , 0, -SM_CYMENU, A_ScreenWidth, A_ScreenHeight + SM_CYMENU  
		O[hWnd] := {M:M,X:X,Y:Y,W:W,H:H,Menu:Menu} 
		WinSet, AlwaysOnTop, On
		WinSet, Style, +0x01000000		; WS_MAXIMIZE 
		WinSetNormalPos(hWnd, X, Y, W, H)		 
	}
	Else
	{
		WinSet, Region
		WinSet, Style, +0x00C00000
		WinSet, Style, +0x00040000
		If (O[hWnd].M = 1)
		{
			WinGetNormalPos(hWnd, X, Y, W, H)
			WinSet, Style, -0x01000000		; WS_MAXIMIZE
			WinMaximize 
			WinSetNormalPos(hWnd, X, Y, W, H)
		} 
		Else 
			WinRestore
		WinSet, AlwaysOnTop, Off
		O[hWnd].Menu := ""
	}
}

WinGetNormalPos(hwnd, ByRef x, ByRef y, ByRef w, ByRef h)  { 
    VarSetCapacity(wp, 44), NumPut(44, wp) 
    DllCall("GetWindowPlacement", "Ptr", hwnd, "Ptr", &wp) 
    x := NumGet(wp, 28, "int"), y := NumGet(wp, 32, "int") 
    w := NumGet(wp, 36, "int") - x,  h := NumGet(wp, 40, "int") - y
}

WinSetNormalPos(hwnd, x, y, w, h)  { 
	VarSetCapacity(wp, 44, 0), NumPut(44, wp, 0, "uint") 
	DllCall("GetWindowPlacement", "Ptr", hWnd, "Ptr", &wp) 
	NumPut(x, wp, 28, "int"), NumPut(y, wp, 32, "int")
	NumPut(w + x, wp, 36, "int"), NumPut(h + y, wp, 40, "int") 
	DllCall("SetWindowPlacement", "Ptr", hWnd, "Ptr", &wp)	
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: Скрытие панели меню

serzh82saratov пишет:

То есть всё также как было?

Да. Так же.
А сейчас практически идеально. Если перейти по кнопке 2 в режим без заголовка, а далее по клавише 1 в режим без заголовка и меню, то линии нет, даже если перед этим окно было максимизировано. Далее при переключении масштабирования клавишами  1 и 2 все отображается как надо. Подумал, что, наверное, удобнее было бы установить переключение между FullScreenMode() и FullScreenMode(1) одной клавишей, а другой клавишей возвращать окно в исходный вид.

14

Re: AHK: Скрытие панели меню

Если перейти по кнопке 2 в режим без заголовка, а далее по клавише 1 в режим без заголовка и меню, то линии нет

Это на всех окнах эта линия?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15 (изменено: serzh82saratov, 2016-05-27 18:52:36)

Re: AHK: Скрытие панели меню

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

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

#SingleInstance Force
#NoEnv

1::FullScreenMode(1)
2::FullScreenMode()

FullScreenMode(Mode = 0) {
	Static O := [], Bottom := 0
	hWnd := WinExist("A")
	WinGet, Style, Style
	If (Style & 0x00C00000 || Mode)
	{ 
		WinGetNormalPos(hWnd, X, Y, W, H)
		Menu := O[hWnd].Menu ? 0 : 1
		M := O[hWnd].M = "" ? (Style & 0x01000000) : O[hWnd].M  
		If M
		{
			WinGetPos, wX, wY, wW, wH
			WinMove, , , wX, wY, wW, wH
		}
		WinSet, Style, -0x01000000			; WS_MAXIMIZE 
		WinSet, Style, -0x00C00000			; WS_CAPTION
		WinSet, Style, -0x00040000			; WS_SIZEBOX
		WinSet, Style, +0x80000000			; WS_POPUP
		If (!Menu || (SM_CYMENU := 0))
			SysGet, SM_CYMENU, 15
		WinSet, Region, % "0-" SM_CYMENU " w" A_ScreenWidth " h" A_ScreenHeight + Bottom
		WinMove, , , 0, -SM_CYMENU, A_ScreenWidth, A_ScreenHeight + SM_CYMENU + Bottom
		O[hWnd] := {M:M,X:X,Y:Y,W:W,H:H,Menu:Menu} 
		WinSet, AlwaysOnTop, On
		WinSet, Style, +0x01000000		; WS_MAXIMIZE 
		WinSetNormalPos(hWnd, X, Y, W, H)		 
	}
	Else
	{
		WinSet, Region
		WinSet, Style, +0x00C00000
		WinSet, Style, +0x00040000
		If O[hWnd].M 
		{
			WinGetNormalPos(hWnd, X, Y, W, H)
			WinSet, Style, -0x01000000		; WS_MAXIMIZE
			WinMaximize 
			WinSetNormalPos(hWnd, X, Y, W, H)
		} 
		Else 
			WinRestore
		WinSet, AlwaysOnTop, Off
		O[hWnd].M := "", O[hWnd].Menu := 0
	}
}

WinGetNormalPos(hwnd, ByRef x, ByRef y, ByRef w, ByRef h)  { 
    VarSetCapacity(wp, 44), NumPut(44, wp) 
    DllCall("GetWindowPlacement", "Ptr", hwnd, "Ptr", &wp) 
    x := NumGet(wp, 28, "int"), y := NumGet(wp, 32, "int") 
    w := NumGet(wp, 36, "int") - x,  h := NumGet(wp, 40, "int") - y
}

WinSetNormalPos(hwnd, x, y, w, h)  { 
	VarSetCapacity(wp, 44, 0), NumPut(44, wp, 0, "uint") 
	DllCall("GetWindowPlacement", "Ptr", hWnd, "Ptr", &wp) 
	NumPut(x, wp, 28, "int"), NumPut(y, wp, 32, "int")
	NumPut(w + x, wp, 36, "int"), NumPut(h + y, wp, 40, "int") 
	DllCall("SetWindowPlacement", "Ptr", hWnd, "Ptr", &wp)	
} 

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

16

Re: AHK: Скрытие панели меню

Спасибо!

serzh82saratov пишет:

Это на всех окнах эта линия?

Замечаю только в окне Premiere Pro. Может, потому, что оно темное.

17

Re: AHK: Скрытие панели меню

serzh82saratov, скажите, Ваш сценарий работает исключительно с панелями и заголовками окон или же он умеет отрезать часть окна (сверху или снизу)? Можно ли схожим образом скрыть заданную высоту окна в нижней его части?

18

Re: AHK: Скрытие панели меню

В 15 добавил, переменная Bottom.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

19 (изменено: becauseim, 2016-05-27 19:14:32)

Re: AHK: Скрытие панели меню

serzh82saratov, спасибо, работает! Однако, не понимаю, почему, но не работает с программой Resolve. У нее панель меню нестандартная, однако не скрывается в т.ч. и заголовок окна. Не могу понять, с чем это связано.

20

Re: AHK: Скрытие панели меню

А что мне даёт ссылка, вы скриншот приведите.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

21 (изменено: becauseim, 2016-05-27 19:13:39)

Re: AHK: Скрытие панели меню

serzh82saratov, Скриншот.

22

Re: AHK: Скрытие панели меню

Там нет стандартного заголовка и меню. В глобальном массиве oFSM можно указать сколько откуда отступать для окна с указанным классом. Если для окна и так всё нормально, то его указывать не нужно.

+ Новая версия.

#SingleInstance Force
#NoEnv
Global oFSM := {"Notepad":{T:32,B:32,L:32,R:32}}

1::FullScreenMode(1)
2::FullScreenMode()

FullScreenMode(Mode = 0) {
	Static O := []
	hWnd := WinExist("A")
	WinGet, Style, Style
	If (Style & 0x00C00000 || Mode)
	{  
		WinGetNormalPos(hWnd, X, Y, W, H)
		Menu := O[hWnd].Menu ? 0 : 1
		M := O[hWnd].M = "" ? (Style & 0x01000000) : O[hWnd].M  
		If M
		{
			WinGetPos, wX, wY, wW, wH
			WinMove, , , wX, wY, wW, wH
		}
		WinSet, Style, -0x01000000			; WS_MAXIMIZE 
		WinSet, Style, -0x00C00000			; WS_CAPTION
		WinSet, Style, -0x00040000			; WS_SIZEBOX
		WinSet, Style, +0x80000000			; WS_POPUP
		WinGetClass, Class
		Top := oFSM[Class].T, !Top && Top := 0
		Bottom := oFSM[Class].B, !Bottom && Bottom := 0
		Left := oFSM[Class].L, !Left && Left := 0
		Right := oFSM[Class].R, !Right && Right := 0
		If (!Menu || (SM_CYMENU := 0))
			SysGet, SM_CYMENU, 15
		WinSet, Region, % 0 - Left "-" SM_CYMENU + Top " w" A_ScreenWidth  + Right  + Left " h" A_ScreenHeight + Bottom
		WinMove, , , 0 - Left, -(SM_CYMENU + Top), A_ScreenWidth + Left + Right, A_ScreenHeight + SM_CYMENU + Bottom + Top
		O[hWnd] := {M:M,X:X,Y:Y,W:W,H:H,Menu:Menu} 
		WinSet, AlwaysOnTop, On
		WinSet, Style, +0x01000000		; WS_MAXIMIZE 
		WinSetNormalPos(hWnd, X, Y, W, H)		 
	}
	Else
	{
		WinSet, Region
		WinSet, Style, +0x00C00000
		WinSet, Style, +0x00040000
		If O[hWnd].M 
		{
			WinGetNormalPos(hWnd, X, Y, W, H)
			WinSet, Style, -0x01000000		; WS_MAXIMIZE
			WinMaximize 
			WinSetNormalPos(hWnd, X, Y, W, H)
		} 
		Else 
			WinRestore
		WinSet, AlwaysOnTop, Off
		O[hWnd].M := "", O[hWnd].Menu := 0
	}
}

WinGetNormalPos(hwnd, ByRef x, ByRef y, ByRef w, ByRef h)  { 
    VarSetCapacity(wp, 44), NumPut(44, wp) 
    DllCall("GetWindowPlacement", "Ptr", hwnd, "Ptr", &wp) 
    x := NumGet(wp, 28, "int"), y := NumGet(wp, 32, "int") 
    w := NumGet(wp, 36, "int") - x,  h := NumGet(wp, 40, "int") - y
}

WinSetNormalPos(hwnd, x, y, w, h)  { 
	VarSetCapacity(wp, 44, 0), NumPut(44, wp, 0, "uint") 
	DllCall("GetWindowPlacement", "Ptr", hWnd, "Ptr", &wp) 
	NumPut(x, wp, 28, "int"), NumPut(y, wp, 32, "int")
	NumPut(w + x, wp, 36, "int"), NumPut(h + y, wp, 40, "int") 
	DllCall("SetWindowPlacement", "Ptr", hWnd, "Ptr", &wp)	
} 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

23

Re: AHK: Скрытие панели меню

serzh82saratov, ввел данные в массив, но по-прежнему, с окном Resolve не работает, а с текстовым редактором - да.

Global oFSM :={"Qt5QWindowIcon":{T:32,B:32,L:32,R:32}
			,"SciTEWindow":{T:32,B:32,L:32,R:32}}
+ открыть спойлер

http://puu.sh/p72nH/4e6b4be0f9.png

24

Re: AHK: Скрытие панели меню

Тогда не знаю.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

25

Re: AHK: Скрытие панели меню

serzh82saratov, не могли бы Вы подсказать, по какой причине следующий сценарий может не работать при скрытой панели меню? При этом сценарий частично работает при скрытом заголовке окна.

1::
if (A_ThisHotkey = "1") {
   mode := "video"
   effect := "fast color corrector"
}
SetBatchLines -1
ControlSetText, Edit2, %effect%, ahk_class Premiere Pro
ImageSearch, FXControlsX, FXControlsY, 0, 0, A_ScreenWidth, A_ScreenHeight, %A_ScriptDir%\FXControls.png
loop 2
{
 ImageSearch, FXPresetX, FXPresetY, 0, 0, A_ScreenWidth, A_ScreenHeight, %A_ScriptDir%\%mode%%A_Index%.png
 if !ErrorLevel
 {
  MouseClickDrag, Left, %FXPresetX%, %FXPresetY%, %FXControlsX%, %FXControlsY%, 0.5
  Sleep 100
  break
 }
}
return

26

Re: AHK: Скрытие панели меню

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

27 (изменено: becauseim, 2017-02-20 00:34:57)

Re: AHK: Скрытие панели меню

Не актуально.

28

Re: AHK: Скрытие панели меню

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

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

29

Re: AHK: Скрытие панели меню

В смысле в FullScreen включать "Автоматически скрывать панель задач", а при выходе из FullScreen выключать?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

30

Re: AHK: Скрытие панели меню

serzh82saratov, да. Либо, если это невозможно, вообще не скрывать панель задач.

31

Re: AHK: Скрытие панели меню

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


#SingleInstance Force
#NoEnv
Global oFSM := {HideTaskBar:1}

1::FullScreenMode(1)
2::FullScreenMode()

FullScreenMode(Mode = 0) {
	Static O := [], APPBARDATA, _ := VarSetCapacity(APPBARDATA, 36, 0)
	hWnd := WinExist("A")
	WinGet, Style, Style
	If (Style & 0x00C00000 || Mode)
	{
		If oFSM.HideTaskBar
		{
			NumPut(36, APPBARDATA, 0, "UInt") ; First field is the size of the struct
			bits := DllCall("Shell32.dll\SHAppBarMessage"
				,"UInt", 4  ;	ABM_GETSTATE
				,"UInt", &APPBARDATA )
			If !(bits & 1)
			{
				NumPut(1, APPBARDATA, 32, "UInt" )
				DllCall("Shell32.dll\SHAppBarMessage"
					,"UInt", 0xA  ;	ABM_SETSTATE
					,"UInt", &APPBARDATA )
			}
		}
		WinGetNormalPos(hWnd, X, Y, W, H)
		Menu := O[hWnd].Menu ? 0 : 1
		M := O[hWnd].M = "" ? (Style & 0x01000000) : O[hWnd].M  
		If M
		{
			WinGetPos, wX, wY, wW, wH
			WinMove, , , wX, wY, wW, wH
		}
		WinSet, Style, -0x01000000			; WS_MAXIMIZE 
		WinSet, Style, -0x00C00000			; WS_CAPTION
		WinSet, Style, -0x00040000			; WS_SIZEBOX
		WinSet, Style, +0x80000000			; WS_POPUP
		WinGetClass, Class
		Top := oFSM[Class].T, !Top && Top := 0
		Bottom := oFSM[Class].B, !Bottom && Bottom := 0
		Left := oFSM[Class].L, !Left && Left := 0
		Right := oFSM[Class].R, !Right && Right := 0
		If (!Menu || (SM_CYMENU := 0))
			SysGet, SM_CYMENU, 15
		WinSet, Region, % 0 - Left "-" SM_CYMENU + Top " w" A_ScreenWidth  + Right  + Left " h" A_ScreenHeight + Bottom
		WinMove, , , 0 - Left, -(SM_CYMENU + Top), A_ScreenWidth + Left + Right, A_ScreenHeight + SM_CYMENU + Bottom + Top
		O[hWnd] := {M:M,X:X,Y:Y,W:W,H:H,Menu:Menu}
		WinSet, AlwaysOnTop, On
		WinSet, Style, +0x01000000		; WS_MAXIMIZE 
		WinSetNormalPos(hWnd, X, Y, W, H)
	}
	Else
	{
		WinSet, Region
		WinSet, Style, +0x00C00000
		WinSet, Style, +0x00040000
		If O[hWnd].M
		{
			WinGetNormalPos(hWnd, X, Y, W, H)
			WinSet, Style, -0x01000000		; WS_MAXIMIZE
			WinMaximize 
			WinSetNormalPos(hWnd, X, Y, W, H)
		} 
		Else 
			WinRestore
		WinSet, AlwaysOnTop, Off
		O[hWnd].M := "", O[hWnd].Menu := 0
		If oFSM.HideTaskBar
		{
			NumPut(36, APPBARDATA, 0, "UInt") ; First field is the size of the struct
			bits := DllCall("Shell32.dll\SHAppBarMessage"
    			,"UInt", 4  ;	ABM_GETSTATE
    			,"UInt", &APPBARDATA ) 
			If bits & 1
			{
				NumPut(0, APPBARDATA, 32, "UInt")
				DllCall("Shell32.dll\SHAppBarMessage"
					,"UInt", 0xA  ;	ABM_SETSTATE
					,"UInt", &APPBARDATA )
			}
		}
	}
}

WinGetNormalPos(hwnd, ByRef x, ByRef y, ByRef w, ByRef h)  { 
    VarSetCapacity(wp, 44), NumPut(44, wp) 
    DllCall("GetWindowPlacement", "Ptr", hwnd, "Ptr", &wp) 
    x := NumGet(wp, 28, "int"), y := NumGet(wp, 32, "int") 
    w := NumGet(wp, 36, "int") - x,  h := NumGet(wp, 40, "int") - y
}

WinSetNormalPos(hwnd, x, y, w, h)  { 
	VarSetCapacity(wp, 44, 0), NumPut(44, wp, 0, "uint") 
	DllCall("GetWindowPlacement", "Ptr", hWnd, "Ptr", &wp) 
	NumPut(x, wp, 28, "int"), NumPut(y, wp, 32, "int")
	NumPut(w + x, wp, 36, "int"), NumPut(h + y, wp, 40, "int") 
	DllCall("SetWindowPlacement", "Ptr", hWnd, "Ptr", &wp)	
}  
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

32

Re: AHK: Скрытие панели меню

serzh82saratov, работает, как и раньше. Полностью скрывает/перекрывает панел задач, а не переводит в режим автоматического скрытия по умолчанию.
http://puu.sh/ujQpS/d208cce878.png

33

Re: AHK: Скрытие панели меню

А это переключает?

#SingleInstance Force
#NoEnv

1::ToggleAutoHideTaskBar()

ToggleAutoHideTaskBar()
{
	VarSetCapacity( APPBARDATA, 36, 0 )
	NumPut(36, APPBARDATA, 0, "UInt") ; First field is the size of the struct
	bits := DllCall("Shell32.dll\SHAppBarMessage"
    			,"UInt", 4 ; ABM_GETSTATE
    			,"UInt", &APPBARDATA )  
  NumPut( (bits ^ 0x1), APPBARDATA, 32, "UInt" ) ; Toggle Autohide
  DllCall("Shell32.dll\SHAppBarMessage"
    			,"UInt", ( ABM_SETSTATE := 0xA )
    			,"UInt", &APPBARDATA )
}
return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

34 (изменено: becauseim, 2017-02-26 03:27:24)

Re: AHK: Скрытие панели меню

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

35

Re: AHK: Скрытие панели меню

Тогда не знаю, у меня работает.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

36

Re: AHK: Скрытие панели меню

becauseim пишет:

Попробую перезагрузиться.

Я бы ещё группировку кнопок на панели задач отключил перед этим. Сам давно пользуюсь этой вещью, почти не подводит.

37 (изменено: becauseim, 2017-02-26 04:17:48)

Re: AHK: Скрытие панели меню

serzh82saratov, Такой вариант у меня на Win 10 работает. Попробую заменить эту ф-ию в Вашем скрипте.
Flasher, спасибо! Но для меня прелестью AHK является то, что нет необходимости устанавливать отдельные приложения для подобных действий.

1::ToggleAutoHideTaskBar()

ToggleAutoHideTaskBar()
{
VarSetCapacity(APPBARDATA, A_PtrSize=4 ? 36:48)
NumPut(DllCall("Shell32\SHAppBarMessage", "UInt", 4 ; ABM_GETSTATE
										, "Ptr", &APPBARDATA
										, "Int")
 ? 2:1, APPBARDATA, A_PtrSize=4 ? 32:40) ; 2 - ABS_ALWAYSONTOP, 1 - ABS_AUTOHIDE
 , DllCall("Shell32\SHAppBarMessage", "UInt", 10 ; ABM_SETSTATE
                                    , "Ptr", &APPBARDATA)
}
return

38 (изменено: becauseim, 2017-03-01 01:41:51)

Re: AHK: Скрытие панели меню

serzh82saratov, только сейчас обратил внимание, что в последней версии нет ф-ии ToggleAutoHideTaskBar, чтобы можно было ее заменить на версию, найденную мною выше.

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

Например:


1::
HideTitleBar(On)
return

2::
HideTitleBar(Off)
return

3::
HideTitleBar(Off)
HideMenuBar(On)
return

39

Re: AHK: Скрытие панели меню

becauseim пишет:

нет необходимости устанавливать

Портабельные приложения в установке не нуждаются. Да и размер смехотворный (1/12 только от AutoHotKeyU32.exe). Важно проверять именно в "патовых" условиях, как в приведённом примере.

40

Re: AHK: Скрытие панели меню

Flasher, что есть "патовые" условия?

41

Re: AHK: Скрытие панели меню

becauseim пишет:

upd.: кажется, у меня само по себе не работает автоскрытие панели даже после ручной установки режима.

42

Re: AHK: Скрытие панели меню

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

43

Re: AHK: Скрытие панели меню

becauseim
Что за событие, и почему из-за него не должна скрываться панель задач?

44

Re: AHK: Скрытие панели меню

Flasher, режим автоскрытия панели задач работает таким образом, что если Вам, например, пришло сообщение в Skype, который закреплен на панели, то панель разворачивается и остается видимой, пока Вы не откроете окно приложения с активным событием.

45

Re: AHK: Скрытие панели меню

becauseim
Мне требуется, чтобы панель скрывалась до момента её вызова пользователем всегда, вне зависимости от какой-то там активности приложений, ибо не хочу специально реагировать на подобные события только лишь для скрытия панели, когда занят другими делами.

46

Re: AHK: Скрытие панели меню

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

47

Re: AHK: Скрытие панели меню

becauseim
Уведомления никуда и не должны деваться. Для этого сама панель не требуется.

48

Re: AHK: Скрытие панели меню

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

49

Re: AHK: Скрытие панели меню

becauseim
Ваш выбор. Но для меня он раздражителен, особенно когда необходим всепостоянный доступ к статусной строке или строке ввода.

50

Re: AHK: Скрытие панели меню

Помогите, пожалуйста, заменить в сценарии функцию скрытия панели задач на предложенную, т.к. на Windows 10, к сожалению, не работает.

51 (изменено: serzh82saratov, 2017-03-04 00:19:38)

Re: AHK: Скрытие панели меню


#SingleInstance Force
#NoEnv
Global oFSM := {HideTaskBar:1}

1::FullScreenMode(1)
2::FullScreenMode()

FullScreenMode(Mode = 0) {
	Static O := []
	hWnd := WinExist("A")
	WinGet, Style, Style
	If (Style & 0x00C00000 || Mode)
	{
		If oFSM.HideTaskBar && !GetStateHideTaskBar()
			HideTaskBar(1)
		WinGetNormalPos(hWnd, X, Y, W, H)
		Menu := O[hWnd].Menu ? 0 : 1
		M := O[hWnd].M = "" ? (Style & 0x01000000) : O[hWnd].M  
		If M
		{
			WinGetPos, wX, wY, wW, wH
			WinMove, , , wX, wY, wW, wH
		}
		WinSet, Style, -0x01000000			; WS_MAXIMIZE 
		WinSet, Style, -0x00C00000			; WS_CAPTION
		WinSet, Style, -0x00040000			; WS_SIZEBOX
		WinSet, Style, +0x80000000			; WS_POPUP
		WinGetClass, Class
		Top := oFSM[Class].T, !Top && Top := 0
		Bottom := oFSM[Class].B, !Bottom && Bottom := 0
		Left := oFSM[Class].L, !Left && Left := 0
		Right := oFSM[Class].R, !Right && Right := 0
		If (!Menu || (SM_CYMENU := 0))
			SysGet, SM_CYMENU, 15
		WinSet, Region, % 0 - Left "-" SM_CYMENU + Top " w" A_ScreenWidth  + Right  + Left " h" A_ScreenHeight + Bottom
		WinMove, , , 0 - Left, -(SM_CYMENU + Top), A_ScreenWidth + Left + Right, A_ScreenHeight + SM_CYMENU + Bottom + Top
		O[hWnd] := {M:M,X:X,Y:Y,W:W,H:H,Menu:Menu}
		WinSet, AlwaysOnTop, On
		WinSet, Style, +0x01000000		; WS_MAXIMIZE 
		WinSetNormalPos(hWnd, X, Y, W, H)
	}
	Else
	{
		WinSet, Region
		WinSet, Style, +0x00C00000
		WinSet, Style, +0x00040000
		If O[hWnd].M
		{
			WinGetNormalPos(hWnd, X, Y, W, H)
			WinSet, Style, -0x01000000		; WS_MAXIMIZE
			WinMaximize 
			WinSetNormalPos(hWnd, X, Y, W, H)
		} 
		Else 
			WinRestore
		WinSet, AlwaysOnTop, Off
		O[hWnd].M := "", O[hWnd].Menu := 0
		If oFSM.HideTaskBar && GetStateHideTaskBar()
			HideTaskBar(0)
	}
}

HideTaskBar(Hide) {
	VarSetCapacity(APPBARDATA, A_PtrSize = 4 ? 36 : 48)										
	NumPut(Hide ? 1 : 2, APPBARDATA, A_PtrSize = 4 ? 32 : 40) ; 2 - ABS_ALWAYSONTOP, 1 - ABS_AUTOHIDE
	DllCall("Shell32\SHAppBarMessage", "UInt", 10 ; ABM_SETSTATE
									, "Ptr", &APPBARDATA)
}

GetStateHideTaskBar() {
	VarSetCapacity(APPBARDATA, A_PtrSize = 4 ? 36 : 48)
	Return DllCall("Shell32\SHAppBarMessage", "UInt", 4 ; ABM_GETSTATE
										, "Ptr", &APPBARDATA
										, "Int")
}

WinGetNormalPos(hwnd, ByRef x, ByRef y, ByRef w, ByRef h)  { 
    VarSetCapacity(wp, 44), NumPut(44, wp) 
    DllCall("GetWindowPlacement", "Ptr", hwnd, "Ptr", &wp) 
    x := NumGet(wp, 28, "int"), y := NumGet(wp, 32, "int") 
    w := NumGet(wp, 36, "int") - x,  h := NumGet(wp, 40, "int") - y
}

WinSetNormalPos(hwnd, x, y, w, h)  { 
	VarSetCapacity(wp, 44, 0), NumPut(44, wp, 0, "uint") 
	DllCall("GetWindowPlacement", "Ptr", hWnd, "Ptr", &wp) 
	NumPut(x, wp, 28, "int"), NumPut(y, wp, 32, "int")
	NumPut(w + x, wp, 36, "int"), NumPut(h + y, wp, 40, "int") 
	DllCall("SetWindowPlacement", "Ptr", hWnd, "Ptr", &wp)	
}   
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

52 (изменено: becauseim, 2017-03-04 04:14:19)

Re: AHK: Скрытие панели меню

serzh82saratov, спасибо! Но панель не разворачивается при наведении.

53

Re: AHK: Скрытие панели меню

Так понимаю что в FullScreen так и положено, проверял без скрипта на паре приложений.
Вам тогда надо не FullScreen, а его имитацию пробовать.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

54

Re: AHK: Скрытие панели меню

serzh82saratov, не знаю, нужен ли мне Fullscreen, мне нужно скрытие панели заголовка, меню и задач. Скрытие последнего условно (перевод в режим "Автоматического скрытия" средствами Windows).

55

Re: AHK: Скрытие панели меню

Помогите, пожалуйста, разделить каждое действие на отдельную ф-ию в данном примере. Хотел бы заменить отдельную ф-ию.

56

Re: AHK: Скрытие панели меню

serzh82saratov, разделите, пожалуйста, в Вашем сценарии действия на отдельные функции, а именно на: HideTaskBar(), HideMenuBar(), HideTitleBar(), т.к. самостоятельно не могу определить, где заканчивается одно действие и начинается другое.