MsgBox mit Timeout - Fehler oder nicht?

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
Gucky_87
Posts: 260
Joined: 03 Jul 2014, 05:09

MsgBox mit Timeout - Fehler oder nicht?

19 Jun 2018, 08:08

Hallöle zusammen,

ich bin schon öfter mal über folgendes gestolpert...

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus



Wenn ich ein Gui öffne und dann z.B. eine solche MsgBox anzeige (Task modal), wird ja das Gui gesperrt, was auch so gewollt ist.
Macht der Benutzer aber keine Eingabe, bzw. wählt er nicht innerhalb von 30 Sek. "Ja" oder "Nein" aus, bleibt das Gui gesperrt und das Script scheint "zu stehen"?!
Erst die beiden markierten Zeilen "IfMsgBox, Timeout..." bewirken, dass alles richtig läuft und nach dem Timeout dann "Return" ausgeführt wird.

Meine Meinung war bislang immer (was ja auch falsch sein kann), dass das 2. Return ohne Bedingung vorneweg ausreichend sein sollte, um "Nein" UND den Timeout quasi gemeinsam abzufangen (spart etwas Code - grins)

Oder mache ich einen Denkfehler?


Grüße,

Gucky.
User avatar
Ragnar
Posts: 194
Joined: 30 Sep 2013, 15:25

Re: MsgBox mit Timeout - Fehler oder nicht?

19 Jun 2018, 11:56

Ob das ein Bug in AutoHotkey oder eine Eigenart von Windows ist, kann ich nicht sagen, aber bei einer selbsterstellten GUI ist Gui +OwnDialogs in der Regel die bessere Vorgehensweise. Zum Beispiel:

Code: [Select all] [Download] GeSHi © Codebox Plus

Gui, Add, Button,, Test
Gui, Show, w200
return

ButtonTest:
Gui, +OwnDialogs
MsgBox,,,, 5
return
User avatar
Gucky_87
Posts: 260
Joined: 03 Jul 2014, 05:09

Re: MsgBox mit Timeout - Fehler oder nicht?

20 Jun 2018, 02:37

Das "+OwnDialogs" habe ich in dem GUI eh schon fest drin, es wird bereits beim Erstellen des GUI aufgerufen und nicht erst, wenn ich eine Aktion auslöse.
Ich meine, das ist kein "suerduperschlimmer" Fehler, man muss ja nur "MsgBox, Timeout" setzen und gut.
Mich interessierte nur, ob das an AHK selber, an (wie Du es auch sagst) Windows oder an etwas anderem liegt?

Grüße,

Gucky.
User avatar
Ragnar
Posts: 194
Joined: 30 Sep 2013, 15:25

Re: MsgBox mit Timeout - Fehler oder nicht?

20 Jun 2018, 03:01

Gucky_87 wrote:Das "+OwnDialogs" habe ich in dem GUI eh schon fest drin, es wird bereits beim Erstellen des GUI aufgerufen und nicht erst, wenn ich eine Aktion auslöse.


Das funktioniert so nicht. Gui +OwnDialogs muss im aktuellen Thread angegeben werden, wo das Dialogfenster aufgerufen wird. Du kannst das auch einfach testen, indem du bei meinem Beispiel Gui +OwnDialogs auf die ersten Zeilen verschiebst. Oder schau dir das letzte Beispiel auf der GUI-Seite im Beispielabschnitt ganz unten an.
just me
Posts: 5459
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: MsgBox mit Timeout - Fehler oder nicht?

20 Jun 2018, 04:35

Moin,

das ist interessant. Wenn ich dieses Skript hier in PSPad starte (aktuelles Win 10 und AHK Unicode, beide 64-Bit)

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

wandert das Guifenster nach dem automatischen Schließen der MsgBox in den Hintergrund und bleibt dort dauerhaft inaktiv. Ob mit oder ohne IfMsgBox, Timeout spielt keine Rolle.

Wenn ich stattdessen die zumindest seit Win XP namentlich exportierte aber bis heute nicht dokumentierte Windows Funktion MessageBoxTimeout aufrufe, klappt alles wie es soll.

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus


AHK verwendet einen internen Timer, um die MsgBox nach Zeitablauf zu beenden. Ich habe deshalb die Vermutung, dass es sich um einen AHK Bug bzw. um ein durch AHK ausgelöstes Fehlverhalten des Systems handelt.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 9 guests