Windows Handle

Hi,

Ich habe ein wahrscheinlich ehr untypisches Problemchen, und zwar habe ich mir über die FindWindows-Funktion ein Handle auf ein Fenster gelegt, in meinem Falle das Chat Fenster des MSN Messengers:

HWND hwnd = FindWindow(„imwindowClass“,0 );

Den Namen „imwindowClass“ habe ich vorhermit WinSight herausgefunden.

Das Eingabefeld des Chatfensters auf das ich im endefekt einen Handel brauche heißt „richedit20w“. Ich bekomme über die FindWindowEx-Funktion auch einen Handle darauf,…

hwnd = FindWindowEx(hwnd, 0, „richedit20w“, 0);

…aber dummerweise gibt es ZWEI Felder die so heißen, nämlich sowohl dieses Eingabefeld als auch das Edit-Feld in dem der gesamte Chat-Verlauf-Text angezeigt wird. Und auf letzteres bekomme ich den Handle. Mein Ziel ist es allerdings ein Handle auf das Eingabe Feld zu bekommen was den selben Namen hat.

Also falls da jemand ne kreative Idee zu hat, würd ich mich echt freuen.

Schonma Danke im Vorraus

Hallo !

…aber dummerweise gibt es ZWEI Felder die so heißen,
nämlich sowohl dieses Eingabefeld als auch das Edit-Feld in
dem der gesamte Chat-Verlauf-Text angezeigt wird. Und auf
letzteres bekomme ich den Handle. Mein Ziel ist es allerdings
ein Handle auf das Eingabe Feld zu bekommen was den selben
Namen hat.

Also falls da jemand ne kreative Idee zu hat, würd ich mich
echt freuen.

Eigentlich müsste dir EnumWindows() und EnumChildWindows() weiterhelfen, zumindest bekommst du so alle Handles. Wie du die beiden Felder aber unterscheiden kannst weiss ich jetzt auch nicht.

MfG Peter(TOO)

Hab die Antowrt inzwischen gefunden, man muß einfach noch ein zweites mal suchen und den bereits gefundenen handle für die Eigenschaft „hwndChildAfter“ setzen, also falls es jemand interessiert:

HWND hwnd = FindWindow(„imwindowClass“,0 );
HWND hwnd2;

if (hwnd != NULL)
{
hwnd2 = FindWindowEx(hwnd, 0, „richedit20w“, 0);
if (hwnd != NULL)
{
//Hier war der erste falsche
hwnd2 = FindWindowEx(hwnd, hwnd2, „richedit20w“, 0);
if (hwnd2 != NULL)
{
//hier hab ich dann den zweiten gefunden