Page 1 of 1
DropDownList + Event-Info ?
Posted: 04 Aug 2020, 14:39
by gero
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
Re: DropDownList + Event-Info ?
Posted: 04 Aug 2020, 15:08
by BoBo
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
Re: DropDownList + Event-Info ?
Posted: 04 Aug 2020, 15:27
by gero
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
Re: DropDownList + Event-Info ?
Posted: 04 Aug 2020, 16:08
by Gast
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
Re: DropDownList + Event-Info ?
Posted: 04 Aug 2020, 16:59
by BoBo
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
Re: DropDownList + Event-Info ?
Posted: 04 Aug 2020, 17:38
by gero
@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
Re: DropDownList + Event-Info ?
Posted: 04 Aug 2020, 18:01
by BoBo
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.
Re: DropDownList + Event-Info ?
Posted: 05 Aug 2020, 02:35
by gero
@BoBo ... trotzdem DANKE für deine Hilfsbereitschaft
gruss
gero
Re: DropDownList + Event-Info ? Topic is solved
Posted: 05 Aug 2020, 03:01
by just me
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!
}
}
Re: DropDownList + Event-Info ?
Posted: 05 Aug 2020, 03:15
by BoBo
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
hier nicht gelistet ist?
AFAICS setzt dies auf WM_COMMAND auf (welches gelistet ist) ... grüb
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
Re: DropDownList + Event-Info ?
Posted: 05 Aug 2020, 03:23
by gero
@just me ... PERFEKT ...
Funktioniert hier unter Win7 / 32bit und AHK 1.1.15.02 so wie ich's gesucht habe.
Dickes
DANKE
gruss
gero
Re: DropDownList + Event-Info ?
Posted: 05 Aug 2020, 03:26
by BoBo
@gero Nur so aus Neugier, wofür muss ich jetzt genau wissen das zwar das Control befummelt wurde, aber keine Auswahl stattgefunden hat??
Re: DropDownList + Event-Info ?
Posted: 05 Aug 2020, 03:32
by just me
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.
Re: DropDownList + Event-Info ?
Posted: 05 Aug 2020, 03:34
by BoBo
Merci
Re: DropDownList + Event-Info ?
Posted: 05 Aug 2020, 03:37
by just me
Nachschlag: Die AHK DropDownList ist für Windows nur eine besondere Ausprägung der ComboBox mit dem Stil
CBS_DROPDOWNLIST (0x0003).
Siehe auch:
ComboBox
Re: DropDownList + Event-Info ?
Posted: 05 Aug 2020, 03:48
by gero
@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