1

Тема: AHK: Скрытие заголовка приложения VLC Player

Помогите, пожалуйста, скрыть заголовок окна видеоплеера VLC в режиме отображения Minimal Interface (Ctrl+H).

+ Screenshot

http://puu.sh/v038b/0ff0335110.jpg

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

Win10x64, AHK v1.1.25

2

Re: AHK: Скрытие заголовка приложения VLC Player

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

3

Re: AHK: Скрытие заголовка приложения VLC Player

KusochekDobra. рассматривается не полноэкранный режим.

Win10x64, AHK v1.1.25

4 (изменено: KusochekDobra, 2017-03-27 19:38:08)

Re: AHK: Скрытие заголовка приложения VLC Player


i:=0
f2::
	if (i) {
		WinSet, Style, +0xC00000, A
	} else {
		WinSet, Style, -0xC00000, A
	}
	i:=!i
return

!LButton::
	if (GetKeyState("LButton","P")) {
		WinGetPos,x,y,,, A
		MouseGetPos, xx, yy,win_h
		while (GetKeyState("LButton","P")) {
			MouseGetPos, ww, hh
			if (ww >= xx && hh >= yy) { ; вниз вправо
				xResult:=x+(ww - xx),yResult:=y+(hh - yy)
			} else if (ww < xx && hh >= yy) { ; вниз влево
				xResult:=x-(xx - ww),yResult:=y+(hh - yy)
			} else if (hh < yy && ww >= xx) { ; вверх вправо
				xResult:=x+(ww - xx),yResult:=y-(yy - hh)
			} else if (ww < xx && hh < yy) { ; вверх влево
				xResult:=x-(xx - ww),yResult:=y-(yy - hh)
			}
			;Sleep, 10
			WinMove,ahk_id%win_h%,,xResult,yResult
		}
	}
return

Удерживая Alt, нажмите и держите ЛКМ. Активное окно будет перемещаться вслед за курсором. Пример с изменением стиля окна нашёл в справке для "WinSet".

5

Re: AHK: Скрытие заголовка приложения VLC Player

У меня ваш код дергает окно.
А этот нет:

SetWinDelay,2
CoordMode,Mouse
return

!LButton::
MouseGetPos,KDE_X1,KDE_Y1,KDE_id
WinGetPos,KDE_WinX1,KDE_WinY1,,,ahk_id %KDE_id%
Loop
{
    GetKeyState,KDE_Button,LButton,P ; Break if button has been released.
    If KDE_Button = U
        break
    MouseGetPos,KDE_X2,KDE_Y2 ; Get the current mouse position.
    KDE_X2 -= KDE_X1 ; Obtain an offset from the initial mouse position.
    KDE_Y2 -= KDE_Y1
    KDE_WinX2 := (KDE_WinX1 + KDE_X2) ; Apply this offset to the window position.
    KDE_WinY2 := (KDE_WinY1 + KDE_Y2)
    WinMove,ahk_id %KDE_id%,,%KDE_WinX2%,%KDE_WinY2% ; Move the window to the new position.
}
return

6

Re: AHK: Скрытие заголовка приложения VLC Player

Ну так у меня и сравнительного опыта меньше.
Первое, что пришло в голову.

7

Re: AHK: Скрытие заголовка приложения VLC Player

У Вас в примере указано:


SetWinDelay,2

С этой строкой и мой пример ведёт себя благопристойно, ничем не отличаясь от Вашего.

8

Re: AHK: Скрытие заголовка приложения VLC Player

Чтобы не дергалось нужно еще добавить в ваш код:

CoordMode,Mouse

9

Re: AHK: Скрытие заголовка приложения VLC Player

Да, у меня есть остальные строки вроде этой, или "#SingleInstance, Force", "#NoEnv" и прочих. Добавляю их по умолчанию в закомментированную часть начала каждого сценария и для разного применения снимаю комментарии с нужных. Но с этой ещё не встречался, поэтому за наводку спасибо. Вижу теперь, что не совсем корректно, не указывать используемые настройки в некоторых обсуждениях, из-за чего результат может толковаться иначе.

Век живи - век учись.

10 (изменено: svoboden, 2017-03-28 16:39:13)

Re: AHK: Скрытие заголовка приложения VLC Player

Malcev, в первый раз вижу такую запись: "CoordMode,Mouse", может, так надо: "CoordMode, Mouse, Screen" или "CoordMode, Mouse, Relative".

11

Re: AHK: Скрытие заголовка приложения VLC Player

svoboden, из справки, по последнему параметру:


If Param2 is omitted, it defaults to Screen.

12

Re: AHK: Скрытие заголовка приложения VLC Player

А, ну да, извиняюсь.

13

Re: AHK: Скрытие заголовка приложения VLC Player

Malcev, KusochekDobra, спасибо! Работает!
Жаль, что заголовок не скрывается полностью. Так понимаю, сделать это невозможно из-за особенностей приложения. Или потому, что у меня репак VLC (Ace Player)?

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

http://puu.sh/v0MC9/2d745e44e2.jpg

Win10x64, AHK v1.1.25

14

Re: AHK: Скрытие заголовка приложения VLC Player

Можно узнавать координаты нужного контрола и обрезать ненужное:

f2::
SetTitleMatchMode 2
WinGet, ActiveControlList, ControlList, VLC media player
Loop, Parse, ActiveControlList, `n
{
   if InStr(A_LoopField, "VLC MSW video")
   {
      ControlGetPos, CtrlX, CtrlY, CtrlW, CtrlH, %A_LoopField%, VLC media player
      WinSet, Region, % CtrlX "-" CtrlY " W" CtrlW " H" CtrlH, VLC media player
      break
   }
}
return

15

Re: AHK: Скрытие заголовка приложения VLC Player

Malcev, спасибо! А куда необходимо вводить значения "ненужного"?

Win10x64, AHK v1.1.25

16

Re: AHK: Скрытие заголовка приложения VLC Player

А разве я писал, что надо вводить ненужное.
WinSet, Region - тоже самое, что crop в фотошопе.

17

Re: AHK: Скрытие заголовка приложения VLC Player

Malcev, не понимаю, что я делаю неправильно, но не замечаю каких-либо изменений. Вероятно, неправильно задал координаты?

f2::
SetTitleMatchMode 2
WinGet, ActiveControlList, ControlList, ahk_exe ace_player.exe
Loop, Parse, ActiveControlList, `n
{
   if InStr(A_LoopField, "VLC MSW video")
   {
      ControlGetPos, CtrlX, CtrlY, CtrlW, CtrlH, %A_LoopField%, ahk_exe ace_player.exe
      WinSet, Region, % 100 "-" 200 " W" 10 " H" 10, ahk_exe ace_player.exe
      break
   }
}
return
Win10x64, AHK v1.1.25

18 (изменено: Malcev, 2017-03-28 18:03:36)

Re: AHK: Скрытие заголовка приложения VLC Player

А зачем вы задаете координаты?
Вы алгоритм кода поняли?
Вот эта строка лишена какого-либо смысла:

WinSet, Region, % 100 "-" 200 " W" 10 " H" 10, ahk_exe ace_player.exe

Зачем вы число 100 и остальные числа вставили как переменные?
Так попробуйте:

f2::
WinExist("ahk_exe ace_player.exe")
WinGet, ActiveControlList, ControlList
Loop, Parse, ActiveControlList, `n
{
   if InStr(A_LoopField, "VLC MSW video")
   {
      ControlGetPos, CtrlX, CtrlY, CtrlW, CtrlH, %A_LoopField%
      WinSet, Region, % CtrlX "-" CtrlY " W" CtrlW " H" CtrlH
      break
   }
}
return

19

Re: AHK: Скрытие заголовка приложения VLC Player

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

Win10x64, AHK v1.1.25

20

Re: AHK: Скрытие заголовка приложения VLC Player

Тогда вам придется понять алгоритм и попробовать применить его относительно ace_player.
У меня его нет, а на VLC код работает.

21 (изменено: becauseim, 2017-03-28 18:26:31)

Re: AHK: Скрытие заголовка приложения VLC Player

Malcev, так понимаю, код оставляет видимым только заданный контрол?

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

http://puu.sh/v1ccZ/a851a18404.jpg

f2::
WinExist("ahk_exe notepad.exe")
WinGet, ActiveControlList, ControlList
Loop, Parse, ActiveControlList, `n
{
   if InStr(A_LoopField, "edit1")
   {
      ControlGetPos, CtrlX, CtrlY, CtrlW, CtrlH, %A_LoopField%
      WinSet, Region, % CtrlX "-" CtrlY " W" CtrlW " H" CtrlH
      break
   }
}
return

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

Win10x64, AHK v1.1.25

22

Re: AHK: Скрытие заголовка приложения VLC Player

f2::
win := WinExist("ahk_exe ace_player.exe")
WinGet, ActiveControlList, ControlList
Loop, Parse, ActiveControlList, `n
{
   if InStr(A_LoopField, "VLC MSW video")
   {
      DllCall("dwmapi\DwmSetWindowAttribute", "Ptr", win, "UInt", 2, "Int*", 1, "UInt", 4)
      ControlGetPos, CtrlX, CtrlY, CtrlW, CtrlH, %A_LoopField%
      WinSet, Region, % CtrlX "-" CtrlY " W" CtrlW " H" CtrlH
      break
   }
}
return

23

Re: AHK: Скрытие заголовка приложения VLC Player

Malcev, спасибо, работает! А какой командой вернуть окно в исходный вид?

Win10x64, AHK v1.1.25

24

Re: AHK: Скрытие заголовка приложения VLC Player

Читайте про WinSet, Region.

25

Re: AHK: Скрытие заголовка приложения VLC Player

Malcev, после выполнения WinSet с пустым параметром Region, окно становится отличным от первоначального. Это как-то можно исправить?

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

http://puu.sh/v1BCl/763b2bca10.jpg

Win10x64, AHK v1.1.25