Nach Windowsstart Focus für AHK-Script Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
LuckyJoe
Posts: 341
Joined: 02 Oct 2013, 09:52

Nach Windowsstart Focus für AHK-Script

28 Mar 2018, 04:53

Hallo zusammen,

ich habe den Link zu einem AHK-Script in das Windows-Autostartmenü gelegt, so dass das Script bei jedem Windowsstart aufgerufen wird. Innerhalb des Scripts habe ich das verwendete GUI auf AllwaysOnTop. Das funktioniert soweit auch, aber offensichtlich werden beim Start im Hintergrund noch weitere Programme geladen, so dass mein Script den Focus verliert. Ich muss diesen immer erst manuell setzen oder die Maus bedienen. Ich würde aber lieber, dass das Script den Focus automatisch er- oder behält, so dass ich sofort mit Enter meine Standard-Umgebung aufrufe oder sofort mit den Cursor-Tasten eine andere Umgebung aufrufen kann.

Wie behält bzw. bekommt mein Script den Focus? Geht das vielleicht zeitgesteuert, dass innerhalb des Scriptes per Timer der Focus überprüft und gesetzt wird?

Code: Select all

#NoEnv
#SingleInstance force

Gui, -Theme
Gui, Font, s10 cFFF68F, Arial
Gui, Add, Text,		x22 y15                      		, Womit starten?
Gui, Font
Gui, Add, Button,	x30 y40  w70  h23 gStandardButton	Default, Standard
Gui, Add, Button,	x30 y70  w70  h23 gNutzer1Button    , Nutzer 1
Gui, Add, Button,	x30 y100 w70  h23 gEscButton	    , Esc

Gui, Color, 4488BB
Gui, -Border
Gui, Show, 			xCenter y300 w130 h140
Gui, +LastFound
GuiID := WinExist()
WinSet, Redraw
WinSet, AlwaysOnTop, on
Return

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Standard-Button										'
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
StandardButton:
	Gui, Submit
	MsgBox, 1,, Startdateien ausführen?, 3
	IfMsgBox Timeout
		MsgBox, Standard-Umgebung starten ...
	Else IfMsgBox Ok
		MsgBox, Standard-Umgebung starten ...
	Else
		Gui, Show
Return

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Nutzer1Button											'
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nutzer1Button:
	Gui, Submit
	MsgBox, 1,, Nutzer1-Umgebung starten?, 3
	IfMsgBox Timeout
		MsgBox, Nutzer1-Umgebung starten ...
	Else IfMsgBox Ok
		MsgBox, Nutzer1-Umgebung starten ...
	Else
		Gui, Show
Return

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Esc-Button											'
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EscButton:
	Goto GuiEscape

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Beenden												'
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
GuiEscape:
GuiClose:
	Gui, Submit
	Gui, Destroy
	ExitApp
Danke schon mal im Voraus!
Viele Grüße - Lucky Joe
Herzliche Grüße aus dem Rheinland
Lucky Joe
Folllast
Posts: 91
Joined: 24 Jan 2018, 04:57

Re: Nach Windowsstart Focus für AHK-Script

30 Mar 2018, 01:34

Wenn du meinst, das das Fenster nicht im Vordergrund (markiert) ist. .. das geht mit WinActivate bzw. WinWaitActivate.
User avatar
LuckyJoe
Posts: 341
Joined: 02 Oct 2013, 09:52

Re: Nach Windowsstart Focus für AHK-Script

30 Mar 2018, 13:39

Hallo,

zunächst Danke für eur Mithilfe!

@Bobo:
Ist das einzige Programm im Autostart-Ordner (darum ja mein Script, weil ich je nach Vorhaben die jeweilige Arbeitsumgebung laden will). Es werden aber im Hintergrund Processe und Programme geladen, die offensichtlich der GUI den Fokus entziehen (ich weiß nicht welche). Die Links habe ich mir aber mal angeschaut.

@Folllast:
WinActivate kenne ich natürlich, aber ich suchte dann so was wie "WinActivate Me" und habe - wie in der Hilfe beschrieben - alles durchgegangen:

Code: Select all

id := WinExist("A")
WinActivate A
WinActivate, ahk_id %id%
Winmove, xCenter y300
Winset, Enable
Winset, Redraw
WinHide
WinShow
... funktionierte aber nicht.

Letztendlich habe ich jetzt mit einem Timer eine Lösung gefunden, die zwar funktioniert, aber mir irgendwie nicht wirklich "schön" vorkommt:

Code: Select all

#NoEnv
#SingleInstance force
#Persistent

Gui, -Theme
Gui, Font, s10 cFFF68F, Arial
Gui, Add, Text,		x22 y15                      		, Womit starten?
Gui, Font
Gui, Add, Button,	x30 y40  w70  h23 gStandardButton	Default, Standard
Gui, Add, Button,	x30 y70  w70  h23 gNutzer1Button    , Nutzer 1
Gui, Add, Button,	x30 y100 w70  h23 gEscButton	    , Esc

Gui, Color, 4488BB
Gui, -Border
Gui, Show, 			xCenter y300 w130 h140
Gui, +LastFound
GuiID := WinExist()
WinSet, Redraw
WinSet, AlwaysOnTop, on

id := WinExist("A")
SetTimer, WinActivateThisScript, 1000					; jede Sekunde Fokus prüfen
Return

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Script regelmäßig "fokussieren"						'
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WinActivateThisScript:
	IfWinNotActive, XStart
		WinActivate, ahk_id %id%
Return

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Standard-Button										'
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
StandardButton:
	Gui, Submit
	MsgBox, 1, XStart, Startdateien ausführen?, 300000
	IfMsgBox Timeout
	{
		MsgBox, Standard-Umgebung starten ...
		Goto GuiClose
	}
	Else IfMsgBox Ok
	{
		MsgBox, Standard-Umgebung starten ...
		Goto GuiClose
	}
	Else
		Gui, Show
Return

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Nutzer1Button											'
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nutzer1Button:
	Gui, Submit
	MsgBox, 1, XStart, Nutzer1-Umgebung starten?, 300000
	IfMsgBox Timeout
	{
		MsgBox, Nutzer1-Umgebung starten ...
		Goto GuiClose
	}
	Else IfMsgBox Ok
	{
		MsgBox, Nutzer1-Umgebung starten ...
		Goto GuiClose
	}
	Else
		Gui, Show
Return

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Esc-Button											'
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EscButton:
	Goto GuiEscape

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Beenden												'
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
GuiEscape:
GuiClose:
	Gui, Submit
	Gui, Destroy
	ExitApp
Viele Grüße
Lucky Joe
Herzliche Grüße aus dem Rheinland
Lucky Joe
just me
Posts: 9451
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Nach Windowsstart Focus für AHK-Script  Topic is solved

31 Mar 2018, 02:01

Moin,

wenn ich das richtig verstehe, soll mit dem Skript als erste Aktion am Rechner eine 'Arbeitsumgebung' ausgewählt werden. Das Skript beendet sich dann. Dafür scheint mir die Timerlösung ausreichend. Als technisch einfache Alternative fällt mir nur Folgendes ein:

Code: Select all

...
Gui, Show, 			xCenter y300 w130 h140
Gui, +LastFound +hwndGuiID ; <<< hwnd Option zugefügt
; GuiID := WinExist()
WinSet, Redraw
WinSet, AlwaysOnTop, on

; id := WinExist("A")
; SetTimer, WinActivateThisScript, 1000					; jede Sekunde Fokus prüfen
Loop {
   WinWaitNotActive, ahk_id %GuiID%
   WinActivate, ahk_id %GuiID%
}
Return
Frohe Ostern!
User avatar
LuckyJoe
Posts: 341
Joined: 02 Oct 2013, 09:52

Re: Nach Windowsstart Focus für AHK-Script

31 Mar 2018, 03:27

... ahhhhh ... ich wußte, dass es "schöner" geht. :dance:
Allerdings darf ; GuiID := WinExist() nicht auskommentiert sein ;)

Danke just me - und ebenfalls Frohe Ostern!
Lucky Joe
Herzliche Grüße aus dem Rheinland
Lucky Joe
just me
Posts: 9451
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Nach Windowsstart Focus für AHK-Script

31 Mar 2018, 03:59

LuckyJoe wrote:Allerdings darf ; GuiID := WinExist() nicht auskommentiert sein ;)
Eigentlich wird die Variable GuiID jetzt hier versorgt:

Code: Select all

Gui, +LastFound +hwndGuiID ; <<< hwnd Option zugefügt
Läuft das so bei Dir nicht?
User avatar
LuckyJoe
Posts: 341
Joined: 02 Oct 2013, 09:52

Re: Nach Windowsstart Focus für AHK-Script

31 Mar 2018, 05:06

:headwall: :oops:
... nicht gesehen - sorry. Wieder dazugelernt ;)
Herzliche Grüße aus dem Rheinland
Lucky Joe

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 49 guests