ich will die Lautstärke des aktuellen Fullscreen-Window (irgendein Spiel) ändern und per GUI anzeigen lassen.
Die Fullscreen detection und die Änderung der Lautstärke via nircmd.exe funktioniert soweit ganz gut.
Das Problem: Wenn ich die Lautstärke per GUI-Overlay anzeigen lassen will minimiert sich das Spiel.
Ich habe dann versucht den Fokus wieder direkt auf das Spiel zu setzen - dann minimiert sich das Spiel nur kurz, aber das ist auch keine schöne Lösung.
Hier mein aktueller Code:
Code: Select all
volume := 1
;
; Increase full-screen app volume
;
$NumpadAdd::
isFullScreen := isWindowFullScreen("A")
if (isFullScreen) {
volume += 0.1
volume := +volume > 1 ? 1 : volume
Run, nircmd.exe setappvolume focused %volume%
GoSub, SubOverlayOpen
} else {
Send {NumpadAdd}
}
Return
;
; Decrease full-screen app volume
;
$NumpadSub::
isFullScreen := isWindowFullScreen("A")
if (isFullScreen) {
volume -= 0.1
volume := volume < 0 ? 0 : volume
Run, nircmd.exe setappvolume focused %volume%
GoSub, SubOverlayOpen
} else {
Send {NumpadSub}
}
Return
;
; Check if current window is in full-screen
;
isWindowFullScreen(winTitle) {
winID := WinExist(winTitle)
If (!winID)
Return false
WinGet style, Style, ahk_id %WinID%
WinGetPos ,,,winW,winH, %winTitle%
; 0x800000 is WS_BORDER.
; 0x20000000 is WS_MINIMIZE.
; no border and not minimized
Return ((style & 0x20800000) or winH < A_ScreenHeight or winW < A_ScreenWidth) ? false : true
}
;
; Open overlay
;
SubOverlayOpen:
Gui, GUI_Overlay:New, +LastFound +AlwaysOnTop -Caption +E0x80020
Gui, Margin, 5, 5
Gui, Font, s16, Arial
Gui, Add, Text, w40 Center cWhite, %volume%
Gui, Color, 000000
WinSet, Transparent, 200
WinSet, ExStyle, +0x80020
Gui, Show, Hide, Overlay
WinMove, 20, 20
Gui, GUI_Overlay:Show
SetTimer, SubOverlayClose, 1000
Return
;
; Close Overlay
;
SubOverlayClose:
Gui, GUI_Overlay:Destroy
Return