Nach MsgBox wird Window Busy Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Nach MsgBox wird Window Busy

07 Dec 2018, 01:52

AHK und/oder das Betriebssystem haben ein seltsames Verhalten bei folgendem Skript:

Code: Select all

Gui, Show, Center  h270 w322

MsgBox, 8256,AHK-Version, %A_AhkVersion% ,2
sleep 20000
ListLines
#q::
ExitApp
return
Beide Fenster lassen sich nicht mit der Maus manipulieren. :headwall:

#q beendet das Skript.
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Nach MsgBox wird Window Busy  Topic is solved

07 Dec 2018, 04:00

Moin,

die MsgBox lässt sich hier schon mit der Maus ansprechen, solange sie angezeigt wird.

Ich glaube, dieses Problem wurde schon diskutiert. Es hängt meiner Erinnerung nach mit dem Timeout zusammen. AHK will aus irgendwelchen Gründen die totale Kontrolle behalten, auch während eine Msgbox angezeigt wird. Für den Timeout wird deshalb nicht die (von Microsoft nicht offiziell dokumentierte) Funktion MessageBoxTimeout() verwendet. AHK simuliert das mit einem internen Timer. Das scheint bei neueren Windowsversionen Probleme zu bereiten, wenn eine MsgBox nach Zeitablauf automatisch geschlossen wird, für die der Typ MB_TASKMODAL (0x00002000L) gesetzt wurde. Der Fehler tritt nicht auf, wenn direkt die Funktion MessageBoxTimeout per DllCall aufgerufen wird:

Code: Select all

Gui, Show, Center  h270 w322

MessageBoxTimeout(0, A_AhkVersion, "AHK-Version", 8256, 2000)
sleep 20000
ListLines
Return
GuiClose:
#q::
ExitApp
return

MessageBoxTimeout(Owner, Text, Title, Type, Time) {
   Return DllCall("MessageBoxTimeout", "Ptr", Owner, "Str", Text, "Str", Title, "UInt", Type, "UShort", 0, "UInt", Time, "Int")
}
:xmas:
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Nach MsgBox wird Window Busy

07 Dec 2018, 06:14

Grund dafür dass AHK die Kontrolle behalten will ist, dass es immer auf Hooks antworten können muss.
Recommends AHK Studio
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Nach MsgBox wird Window Busy

07 Dec 2018, 06:41

Ja, ist mir klar, doch irgendwie läuft ja bei dieser Parameterkombination in AHK offensichtlich etwas falsch.
User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Re: Nach MsgBox wird Window Busy

07 Dec 2018, 07:20

Danke euch beiden,

fuer mich war aergerlich, dass ich in einem laengeren Skript mehere Tage nach dem Fehler suchte
und dann nur zufaellig auf die fehlerhafte MSGBox-Option gekommen bin.

JustMe Deine Fehlerumschiffung funktioniert tadellos.
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Re: Nach MsgBox wird Window Busy

08 Dec 2018, 17:04

Es muesste doch moeglich sein, dass intern AHK mit einem eigenen Timer auf den Timeout wartet,
die MsgBox letztendlich mit einem Betriebsystem Befehl schliesst, sodass die Fenster nicht mehr busy werden!?!
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Nach MsgBox wird Window Busy

09 Dec 2018, 02:57

Moin Gerdi,

genau das tut AHK. Für den Fall, dass die MsgBox aufgrund des Typs 8192 (Task-Modal) vorhandene Anwendungsfenster blockt, entsteht dabei aber anscheinend (zumindest manchmal) ein Zustand, der die Anwendungsfenster nicht wieder aktiviert.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 21 guests