Button "Hilf" bei MsgBox abfragen?

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

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

Button "Hilf" bei MsgBox abfragen?

24 Jul 2018, 07:09

Hallöle,

in der Hilfe steht leider nicht, wie man den "Hilfe" Button abfragen kann, den man ja optional in MsgBoxen einblenden kann.

Geht das überhaupt?

Gruß,

Gucky.
GEV
Posts: 1002
Joined: 25 Feb 2014, 00:50

Re: Button "Hilf" bei MsgBox abfragen?

24 Jul 2018, 07:33

Siehe https://ahkde.github.io/docs/commands/M ... emerkungen
(falls du die Bemerkung übersehen hast).
Wenn du eine spezifische Frage dazu hast, werde bitte mehr spezifisch.
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Button "Hilf" bei MsgBox abfragen?

24 Jul 2018, 08:19

Inwiefern MEHR spezifisch?

Genau diese Seite, die Du mir geschickt hast (Vielen Dank dafür!), habe ich gerade per Suchmaschine gefunden, aber der HILFE Button wird offenbar nicht abgefragt weil ich vermutlich einen Fehler mache.
Die ersten drei Buttons funktionieren, der umbenannte Hilfe Button löst nichts aus.

Hier mal mein Codeschnipsel:

Code: Select all

OnMessage(0x53, "WM_HELP")
SetTimer, ChangeButtonNames, 25
; MsgBox mit ? Symbol, 2. Button als Standard und 4 Buttons insgesamt.
MsgBox, 16675, Auswahl, Klicken Sie einen Button an...
OnMessage(0x53, "")
ifMsgBox, Yes
    TYP := "Button 1"
IfMsgBox, No
    TYP := "Button 2"
IfMsgBox, Cancel
    TYP := "Button 3"

msgbox Geklickt: %TYP%
Reload

WM_HELP()
{
    TYP := "Hilfe"
}

ChangeButtonNames:
    IfWinNotExist, Auswahl
        Return

    SetTimer, ChangeButtonNames, Off 
    ControlSetText, Button1, Button &1
    ControlSetText, Button2, Button &2
    ControlSetText, Button3, Button &3
    ControlSetText, Button4, &Beenden
return
gregster
Posts: 8989
Joined: 30 Sep 2013, 06:48

Re: Button "Hilf" bei MsgBox abfragen?

24 Jul 2018, 09:01

Bin mir gerade nicht sicher, wie man eine Variable (selbst wenn sie global wäre) via eine Funktion setzen kann, die per OnMessage registriert wurde. War Unsinn, siehe Beiträge weiter unten.

Aber... wenn ich der Hilfe folge, dann müssen zwei Bedingungen erfüllt sein, damit der Hilfe-Button eine Wirkung hat:
1. Die Message Box wurde einem GUI-Fenster mithilfe von Gui +OwnDialogs untergeordnet.
2. Das Skript überwacht die WM_HELP-Meldung (0x53). Zum Beispiel: OnMessage(0x53, "WM_HELP"). Durch Aufrufen der WM_HELP-Funktion könnte man den Benutzer zusätzliche Hinweise mithilfe eines weiteren Fensters oder Message Box geben.
Bedingung 1 hast du ignoriert.
Bedingung 2 hast du erfüllt - allerdings blendest du durch das Aufrufen der "Aufrufen der WM_HELP-Funktion" keine "zusätzliche[n] Hinweise mithilfe eines weiteren Fensters oder Message Box" hinzu, sondern versuchst, eine nicht-globale Variable zu setzen (aber wie gesagt, das funktioniert bei einer solchen Funktion offenbar noch nicht mal mit einer globalen Variable - aber da gibt es bestimmt auch irgendwelche "Tricks"... ich muss mal in meine Skripts gucken - ich meine, ich hätte mich damit schon mal auseinandergesetzt)

Gemäß der Hilfe müsste zumindest das hier funktionieren:

Code: Select all

; "1. Die Message Box wurde einem GUI-Fenster mithilfe von Gui +OwnDialogs untergeordnet."
Gui +OwnDialogs
OnMessage(0x53, "WM_HELP")
SetTimer, ChangeButtonNames, 25
; MsgBox mit ? Symbol, 2. Button als Standard und 4 Buttons insgesamt.
MsgBox, 16675, Auswahl, Klicken Sie einen Button an...
OnMessage(0x53, "")
ifMsgBox, Yes
    TYP := "Button 1"
IfMsgBox, No
    TYP := "Button 2"
IfMsgBox, Cancel
    TYP := "Button 3"

msgbox Geklickt: %TYP%
Reload

WM_HELP()
{
	; "2.   ...  zusätzliche Hinweise mithilfe eines weiteren Fensters oder Message Box"
    Msgbox Das Handbuch finden Sie als pdf-Datei im Programmverzeichnis.
}

ChangeButtonNames:
    IfWinNotExist, Auswahl
        Return

    SetTimer, ChangeButtonNames, Off 
    ControlSetText, Button1, Button &1
    ControlSetText, Button2, Button &2
    ControlSetText, Button3, Button &3
    ControlSetText, Button4, &Beenden
return
und das tut es bei mir auch... ich würde sagen, die Hilfe stimmt, aber ich weiß nicht, ob dich das zufriedenstellt :shifty:
Last edited by gregster on 24 Jul 2018, 09:54, edited 2 times in total.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Button "Hilf" bei MsgBox abfragen?

24 Jul 2018, 09:04

hilfe wrote:Der Hilfe-Button: Sofern die Hilfe-Button-Option (16384) in den Optionen angegeben ist, wird der Hilfe-Button erst eine Wirkung haben, wenn die beiden folgenden Bedingungen erfüllt sind:

Die Message Box wurde einem GUI-Fenster mithilfe von Gui +OwnDialogs untergeordnet.
Das Skript überwacht die WM_HELP-Meldung (0x53). Zum Beispiel: OnMessage(0x53, "WM_HELP"). Durch Aufrufen der WM_HELP-Funktion könnte man den Benutzer zusätzliche Hinweise mithilfe eines weiteren Fensters oder Message Box geben.
Ich sehe dein GUI +OwnDialogs nicht.
Zudem ist die TYP Variable in deiner Funktion nur lokal und wirkt sich nicht auf die TYP Variable aus die du in dem Rest des Skripts verwendest.
Recommends AHK Studio
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Button "Hilf" bei MsgBox abfragen?

24 Jul 2018, 09:13

Ah gregster war schneller.
Allerdings eine Anmerkung:
Das hier funktioniert bei mir:

Code: Select all

; "1. Die Message Box wurde einem GUI-Fenster mithilfe von Gui +OwnDialogs untergeordnet."
Gui +OwnDialogs
OnMessage(0x53, "WM_HELP")
help := "Nein"
MsgBox, 16675, Auswahl, Klicken Sie einen Button an...
OnMessage(0x53, "")
ifMsgBox, Yes
    TYP := "Yes"
IfMsgBox, No
    TYP := "No"
IfMsgBox, Cancel
    TYP := "Cancel"

msgbox Geklickt: %TYP% `nHilfe? %help%
Reload

WM_HELP(a,b, byref var)
{
	global help
	help := "Hilfe"
}
Recommends AHK Studio
gregster
Posts: 8989
Joined: 30 Sep 2013, 06:48

Re: Button "Hilf" bei MsgBox abfragen?

24 Jul 2018, 09:15

Hast recht, nnnik. Ist mir gerade auch aufgefallen. Hatte einen Fehler gemacht beim rumprobieren. Globale Variablen lassen sich setzen. Das ist doch eine Erleichterung :D

Wobei die Parameter in WM_HELP(a,b, byref var), die in der ersten Version standen, die ich gepostet habe, auch nichts bewirken. Die waren nur übrig vom rumprobieren... :shh:
WM_HELP() reicht für diesen Zweck natürlich...
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Button "Hilf" bei MsgBox abfragen?

25 Jul 2018, 03:14

Aaaaaach, ich bin echt urlaubsreif. Danke Euch!
Ich hatte es so verstanden, dass ENTWEDER die 1. ODER 2. Bedingung erfüllt sein muss.
So funktioniert es natürlich.

Gucky.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 23 guests