DropDownList + Event-Info ? Topic is solved
Moderator: jNizM
DropDownList + Event-Info ?
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
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 ?
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 ?
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
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 ?
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 ?
Code: Select all
eine Meldung, wenn das DDL geschlosen wird, ohne das etwas ausgewählt wurde.
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 ?
@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 ... 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 ?
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 ?
@BoBo ... trotzdem DANKE für deine Hilfsbereitschaft
gruss
gero
gruss
gero
Re: DropDownList + Event-Info ? Topic is solved
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.
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 ?
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
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 ?
@just me ... PERFEKT ...
Funktioniert hier unter Win7 / 32bit und AHK 1.1.15.02 so wie ich's gesucht habe.
Dickes DANKE
gruss
gero
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 ?
@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 ?
Moin @BoBo,
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.CBN_SELENDCANCEL wrote:The parent window of the combo box receives this notification code through the WM_COMMAND message.
Re: DropDownList + Event-Info ?
Nachschlag: Die AHK DropDownList ist für Windows nur eine besondere Ausprägung der ComboBox mit dem Stil CBS_DROPDOWNLIST (0x0003).
Siehe auch: ComboBox
Siehe auch: ComboBox
Re: DropDownList + Event-Info ?
@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
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