Das Problem kann in einer einfachen Art und Weise ausgedrückt werden: Gegeben ein Steuerelement Handle (IntPtr), woher wissen wir, ob es von ListBox
oder im Allgemeinen wäre es besser, wenn wir wissen, welche Art von Kontrolle es ist.Wie zu bestimmen, ob ein Steuerelement-Handle einer systemeigenen Win32 ListBox ist (oder basierend auf systemeigenem Win32)?
Ich nehme an, dass die ListBox Schöpfer keine Informationen nicht setzen (wie der Klartext „List-Box“) innerhalb des Klassennamen des List-Box (der Klassennamen erhalten werden kann GetClassName
Funktion.
Ich muß Tun Sie dies, weil ich feststellen muss, ob es eine native win32 ListBox unter einem bestimmten Bildschirmpunkt gibt. Der erste Schritt besteht darin, das Steuerelement mit der Funktion WindowFromPoint
zu finden, aber als nächstes müssen wir prüfen, ob das gefundene Handle von einer ListBox ist oder nicht.
Ich habe stundenlang gegoogelt, ohne etwas Interessantes zu finden. Danke für Ihre Hilfe!
UPDATE
Wenn ich sage nativer listbox ich die Kontrolle bedeuten erstellt CreateWindow
mit werden kann, und dann kann der class name
mit einer beliebigen Zeichenkette angegeben werden. Ich nehme an, dass Klassennamen enthalten keinen festen Satz wie LISTBOX
, wie sie für die List-Box in Windows, der Klassenname es ein Format wie WindowsForms10.LISTBOX.app.0.bf771 hat ...
'GetClassName' -> String-Vergleich. –
@ JonathanPotter Der Klassenname kann beliebig sein (er wird vom Steuerelementersteller eingegeben). Ich vermute also, dass es keine Informationen darüber gibt, ob es sich um eine ListBox handelt. – Hopeless
Das macht keinen Sinn. Wenn es ein natives Listbox-Steuerelement ist, wird der Klassenname "LISTBOX" sein. –