GUI-Overlay in Fullscreen-Anwendung Topic is solved

Stelle Fragen zur Automatisierung von Spielen

Moderator: jNizM

Guest

GUI-Overlay in Fullscreen-Anwendung

Post by Guest » 17 Apr 2018, 08:25

Hi,

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
Last edited by BoBo on 10 Dec 2020, 10:40, edited 1 time in total.
Reason: Nach Spiele verschoben.

cl_panda
Posts: 7
Joined: 17 Apr 2018, 08:14

Re: GUI-Overlay in Fullscreen-Anwendung  Topic is solved

Post by cl_panda » 17 Apr 2018, 09:48

Ups, ich hab vergessen mich einzuloggen :) (Autor)

cl_panda
Posts: 7
Joined: 17 Apr 2018, 08:14

Re: GUI-Overlay in Fullscreen-Anwendung

Post by cl_panda » 23 Apr 2018, 09:57

Ich habe diesen Post ins englische übersetzt. Leider gibt es keine saubere Lösung - also gibt es kein Feedback beim Ändern der Lautstärke.
Hier geht's zum englischen Post mit Beschreibung: https://autohotkey.com/boards/viewtopic ... 6&p=214358

Jonny
Posts: 1
Joined: 10 Dec 2020, 08:29

Re: GUI-Overlay in Fullscreen-Anwendung

Post by Jonny » 10 Dec 2020, 09:58

hallo, ich habe das selbe Problem, und bin dabei auf diesen Thread gestoßen.
ich habe zwar immer noch keine Lösung für den Vollbildmodus in spielen, aber eine Unsaubre aber Gute Alternative.

1. du musst Jedes Spiel auf Randloses-Vollbild-Fenster umstellen um ein AHK2 GUI Overlay nutzen zu können.
2. du musst im GUI-Overlay Fenster folgende Optionen mit Übergeben: "+AlwaysOnTop","+Owner", und "NoActivate" oder "NA" (ist beides das selbe und bedeutet das das Neue GUI nicht aktiviert werden soll.)
 (in ahk1 weiß ich nicht wie optionen übergeben werden)
 aber in ahk2 geds so (freitasten trennen verschiedene optionen):
   

Code: Select all

;=============' Fenster Einstellungen '===============================================================
  	  	  Gui.Opt("+AlwaysOnTop")	; Zeigt Das Fenster Über dem Spiel an.
  	  	  Gui.Opt("+Owner")		; verhindert das einblenden der Win-Taskleiste.
  	  ;=============' Fenster Starten '=====================================================================
  	  	  Gui.Show("NoActivate NA")	; Verhindert die aktivierung des Fensters, wenn das Fenster erstellt wird (verhindert das mann aus dem spiel Rausgekickt wird)

 Ich habe mir einen eigenen schnellchat programm geschreiben das auf jedes spiel mit Ranlosem-Vollbild-Fenster und Chat-funktion anwendbar ist.
 Die Chat-Texte die Bestimmten Tasten zugewiesen Wurden, lasse ich mir in der Fenster Inhalt Funktion als Overlay Über dem spiel anzeigen:
 AHK2:
   

Code: Select all

;=============' Fenster Erstellen '===================================================================
  	  	  		Gui := GuiCreate(Optionen, "Chat Auswahl", EreignisObj)
  	  		;=============' Fenster Einstellungen '===============================================================
  	  	  		;Deaktiviert;	Gui.Opt("-Caption")
  	  	  		;Deaktiviert;	Gui.Opt("+Disabled -Background")
  	  	  		Gui.Opt("-Caption")		; Entfernt den Rahmen(Minnimire, und kreuzen, usw...)
  	  	  		Gui.Opt("+Border")		; fügt als ersatz für den Rahmen einen dünnen rahmen hinzu.
  	  	  		Gui.Opt("+AlwaysOnTop")	; Zeigt Das Fenster Über dem Spiel an.
  	  	  		Gui.Opt("+Owner")		; verhindert das einblenden der Win-Taskleiste.
  	  	  		;Deaktiviert;	Gui.AddSteuerelement("Steuerelement")
  	  	  		Gui.BackColor := "EEAA99"	;die Farbeinstellung des Fensters
  	  		;=============' Anzeige im Fenster '==================================================================
  	  	  		GuiText := Funktion_Fenster_Inhalt(Gui, ChatArray)
  	  			
  	  	  		GuiAuswahl := Gui.Add("Picture", " vGuiAuswahl x0 y0 w10 h-1", "Bilder/Hintergrundbild.png" )
  	  	  		GuiAuswahl := Gui.Add("Picture", " vGuiAuswahl x0 y0 w10 h-1", "Bilder/Ausgewaeht.png" )
  	  		;=============' Fenster Starten '=====================================================================
  	  	  		Gui.Show("NoActivate NA y100 w400")
[Mod edit: [code][/code] tags added.]
 
 sobald die auswahltaste gedrückt wurde oder 5sec vergangen sind Zerstöre ich das fenster wieder mit:
   

Code: Select all

Gui.Destroy()
 
 
 in Meinem Lieblingspiel Rocket League das noch keine UTF-8 zeichen Zulässt habe ich mir durch kombination verschiedener Lehrzeichen und anderer Zeichen eine 3-Zeilige Chat-Katze ausgedacht, die anderen Viel Glück wünnscht:
 "   /\------/\     [AHK2-Bot]",
 "  ( ° ._. ° )_/  GL HF!",
 "  \_____/     Viel Gl","{U+00FC}","ck! und Hab(t) Spass!"
 (in Rocket League sieht Die Katze perfeckt aus)

Post Reply

Return to “Spiele”