Alternativ kannst Du natürlich auch
Label1.Caption := buf; mit einer Funktion/Procedure ersetzen was Dir den Output vorbereitet und irgendwo hin sendet.
So umgehst Du zumindest die SubClass / CustomCombo etc Problematik.
Über der Zeile
GetClassName(wnd, buf, SizeOf(buf)); könntest Du die Abfrage auch noch vertiefen/konkretisieren (
wnd := WindowFromPoint(pt); mit einem bestimmten Control
Handle einer ComboBox zum Beispiel), in dieser gezeigten Variante greift
ApplicationIdle auf alle aufgeklappten ComboBox Listen Einträge zu und gibt Inhalt unter Maus weiter.
Ps: Da ich es über
OnIdle Event laufen lasse, kann es passieren das wenn Deine Applikation gerade schwer am schuften ist Du kein Event gefeuert bekommst um das Item unter Maus auszuwerten.
Nee, KodeZwerg.
Anfangs dachte ich auch, dass es Konflikte geben könnte, wenn mehrere Comboboxen vorhanden sind.
Hab ich dann auch getestet.
Es scheint so zu sein, dass immer nur eine einzige Combobox aufgeklappt sein kann, selbst dann, wenn es sich um Comboboxen in verschiedenen Anwendungen handelt. Jedenfalls habe ich es nicht geschafft, so einen Konflikt zu produzieren.
Zum PS:
Bei mir läuft "ApplicationIdle" nur dann, wenn die Liste aufgeklappt ist, und dann läuft ja nichts anderes.