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.