DropDownList + Event-Info ? Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

gero
Posts: 75
Joined: 02 Oct 2013, 05:36

DropDownList + Event-Info ?

Post by gero » 04 Aug 2020, 14:39

Hallo zusammen
Ich finde einfach nichts - also:

Ich habe ein DDL.
Wenn ich das anklicke, mir den Inhalt nur ansehe und nichts neues auswähle und das DDL sich wieder schliesst, also den Focus verliert, gibt es dann irgendein GuiEvent oder irgendeine Meldung darüber, die empfangen und ausgewertet werden kann ?

Ich hoffe, ich habe mein Problem verständlich beschrieben und es findet sich ein Wissender
Gruss + danke fürs Lesen
gero

BoBo
Posts: 3766
Joined: 13 May 2014, 17:15

Re: DropDownList + Event-Info ?

Post by BoBo » 04 Aug 2020, 15:08

Code: Select all

Gui, Add, DDL, vDll gDll, a||b|c
Gui, Show,,% chr(32)
Return

Dll:
	MsgBox % "Huhu!"
	Return

GuiEscape:
	GuiControlGet, res,, Dll
	Gui, Destroy
	MsgBox % res
	Return
F12::
	GuiControlGet, res,, Dll
	MsgBox % res
	Return

gero
Posts: 75
Joined: 02 Oct 2013, 05:36

Re: DropDownList + Event-Info ?

Post by gero » 04 Aug 2020, 15:27

Danke Bobo ... aber ich hab's doch unterstrichen und fett formatiert ... eine Meldung, wenn das DDL geschlosen wird, ohne das etwas ausgewählt wurde.
Also Liste öffnen, guggen was so d'rin ist und wieder schliessen ohne etwas auszuwählen.
Ich suche eine Meldung für genau diesen Vorgang.

gruss
gero

Gast

Re: DropDownList + Event-Info ?

Post by Gast » 04 Aug 2020, 16:08

gero wrote:
04 Aug 2020, 14:39
...gibt es dann irgendein GuiEvent oder irgendeine Meldung darüber, die empfangen und ausgewertet werden kann?
Ich kann diese Frage zwar leider nicht direkt beantworten, aber Windows schickt gewöhnlich für jede Aktion irgend eine Message durch die Gegend, die man leicht abfangen und auswerten kann.
Wenn mir die Doc bei einem solchen Problem keine Antwort geben würde, würde ich wohl den Weg über RegisterShellHookWindow versuchen.

Schau dir vielleicht mal diesen Thread an:
https://autohotkey.com/board/topic/80644-how-to-hook-on-to-shell-to-receive-its-messages/

Ergänzende Infos dazu findest du hier:
https://docs.microsoft.com/de-de/windows/win32/api/winuser/nf-winuser-registershellhookwindow

BoBo
Posts: 3766
Joined: 13 May 2014, 17:15

Re: DropDownList + Event-Info ?

Post by BoBo » 04 Aug 2020, 16:59

Code: Select all

eine Meldung, wenn das DDL geschlosen wird, ohne das etwas ausgewählt wurde.
Mittels +AltSubmit-Parameter bekomme ich hier die "nicht" ausgewählte position angezeigt, ohne diesen den tatsächlich "nicht" ausgewählten Wert.

Code: Select all

Gui, Add, DDL, +AltSubmit vDll gDll, a||b|c
Gui, Show,,% chr(32)
Return

Dll:
	GuiControlGet, res,, Dll
	ToolTip % res "`n" A_GuiEvent "`n" A_GuiControlEvent "`n" A_EventInfo
	Return

GuiEscape:
	GuiControlGet, res,, Dll
	; Gui, Destroy
	MsgBox % res
	Return
F12::
	GuiControlGet, res,, Dll
	MsgBox % res
	Return

gero
Posts: 75
Joined: 02 Oct 2013, 05:36

Re: DropDownList + Event-Info ?

Post by gero » 04 Aug 2020, 17:38

@Gast ...hm ... SKANs Code-Arabesken sind mir einfach zu hoch ... ;)
@BoBo ... das hatte ich alles schon ... hilft nicht wirklich.
So ein DDL öffnet sich doch beim 1. Click ... und beim 2. Click schliesst es sich. Das sollten doch 2 verschiedene Ereignisse sein ... denk ich so.
Ich kann das sicher auch über einen TIMER und MouseGetPos machen ... aber vielleicht gibts ja was eleganteres ... die Hoffnung stirbt zuletzt.

gruss
gero

BoBo
Posts: 3766
Joined: 13 May 2014, 17:15

Re: DropDownList + Event-Info ?

Post by BoBo » 04 Aug 2020, 18:01

Nun ja, das sind verschiedene Dinge, Öffnen und Schließen abfragen, oder die Werte der "nicht erfolgten Auswahl" ermitteln. Außerdem (Maus)klicke ich nicht, sondern bewege mich in der DDL mit den up/down-tasten, oder mit den Initialen (Buchstaben) ihres content. Mausgeschubse war AFAIK keine Bedingung. Good luck.

gero
Posts: 75
Joined: 02 Oct 2013, 05:36

Re: DropDownList + Event-Info ?

Post by gero » 05 Aug 2020, 02:35

@BoBo ... trotzdem DANKE für deine Hilfsbereitschaft

gruss
gero

just me
Posts: 7305
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DropDownList + Event-Info ?  Topic is solved

Post by just me » 05 Aug 2020, 03:01

Moin,

hier (Win 10 64 - AHK 1.1.32.00 64) erzeugt das Öffnen und Schließen der DDL ohne neue Auswahl eine CBN_SELENDCANCEL Benachrichtigung. Die kann man mit OnMessage()für WM_COMMAND (0x0111) abfangen. Mit AHK 1.1 geht das nur für alle Nachrichten aller Controls. Das erhöht das Risiko, eine Benachrichtigung zu versäumen.

Code: Select all

#NoEnv
SetBatchLines, -1
Gui, Margin, 100, 20
Gui, Add, DDL, w100 gSubDDL vVarDDL hwndHDDL, 1|2|3|4
Gui, Show, , Test
OnMessage(0x0111, "WM_COMMAND")
Return

GuiClose:
ExitApp

SubDDL:
ToolTip, Neue Auswahl!
Return

WM_COMMAND(W, L, M, H) {
   ; CBN_SELENDCANCEL = 10
   Global HDDL
   Critical
   If (L = HDDL) && (((W >> 16) & 0xFFFF) = 10)
   {
      ToolTip, Auswahl nicht geändert!
   }
}

BoBo
Posts: 3766
Joined: 13 May 2014, 17:15

Re: DropDownList + Event-Info ?

Post by BoBo » 05 Aug 2020, 03:15

Merci just-me. OnMessage() war mir zwar auch präsent, doch wie identifiziert meiner-einer eine System-Message,
welche kryptisch als CBN_SELENDCANCEL daherkommt (Control-Button-Select-End-Cancel ??) und zB :arrow: hier nicht gelistet ist?
AFAICS setzt dies auf WM_COMMAND auf (welches gelistet ist) ... grüb :think: ling

Edit. CBN_SELENDCANCEL: https://docs.microsoft.com/en-us/windows/win32/controls/cbn-selendcancel
... was es für mich dann eher noch verwirrender macht da mir eine DropDownList nicht als 'ComboBox' geläufig ist :crazy:

gero
Posts: 75
Joined: 02 Oct 2013, 05:36

Re: DropDownList + Event-Info ?

Post by gero » 05 Aug 2020, 03:23

@just me ... PERFEKT ... :D

Funktioniert hier unter Win7 / 32bit und AHK 1.1.15.02 so wie ich's gesucht habe.

Dickes DANKE

gruss
gero

BoBo
Posts: 3766
Joined: 13 May 2014, 17:15

Re: DropDownList + Event-Info ?

Post by BoBo » 05 Aug 2020, 03:26

@gero Nur so aus Neugier, wofür muss ich jetzt genau wissen das zwar das Control befummelt wurde, aber keine Auswahl stattgefunden hat??

just me
Posts: 7305
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DropDownList + Event-Info ?

Post by just me » 05 Aug 2020, 03:32

Moin @BoBo,
CBN_SELENDCANCEL wrote:The parent window of the combo box receives this notification code through the WM_COMMAND message.
Die Windows Controls verwenden für die Benachrichtigung Ihrer Eltern normalerweise entweder WM_COMMAND (0x0111) oder WM_NOTIFY (0x004E). WM_NOTIFY ist dabei die 'modernere' Methode.

BoBo
Posts: 3766
Joined: 13 May 2014, 17:15

Re: DropDownList + Event-Info ?

Post by BoBo » 05 Aug 2020, 03:34

Merci :)

just me
Posts: 7305
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DropDownList + Event-Info ?

Post by just me » 05 Aug 2020, 03:37

Nachschlag: Die AHK DropDownList ist für Windows nur eine besondere Ausprägung der ComboBox mit dem Stil CBS_DROPDOWNLIST (0x0003).

Siehe auch: ComboBox

gero
Posts: 75
Joined: 02 Oct 2013, 05:36

Re: DropDownList + Event-Info ?

Post by gero » 05 Aug 2020, 03:48

@BoBo ... tja wofür brauche ich das ?

Das Control ist normalerweise "hide" ... bei einer Auswahl wird es per gLabel wieder "hide" gesetzt ... wenn ich nichts auswähle bleibt es sichtbar ...

gruss
gero

Post Reply

Return to “Ich brauche Hilfe”