SendMessage erste Schritte
-
Hi,
ich habe etwas mit SendMessage rumexperimentiert, um die Funktion kennen
zu lernen.Nun wollte ich testweise aus meinem geöffneten ICQ-Fenster auslesen,
wieviele Einträge das Treeview (Kontaktliste) hat.Hier mein Versuch:
HWND parent = ::FindWindow("#32770 (Dialog)",0); HWND tview = ::FindWindowEx(parent,NULL,"SysTreeView32",NULL); int iCount = ::SendMessage(tview,LVM_GETITEMCOUNT,0,0); CString str_ic; str_ic.Format("%i",iCount); MessageBox("Anzahl der Einträge im ICQ-Tree:",str_ic);Leider erhalte ich als Rückgabe immer "0" Einträge.
Meine Frage ist, ob ich evtl. LVM_GETITEMCOUNT falsch verwende!
-
LVM_GETITEMCOUNT ist eine Nachricht für die Listenansicht und nicht für die Baumansicht. Die Nachrichten für die Baumansicht fangen mit TVM_ an.
-
Habs grad auch gelöst,thx. Ich scheitere allerdings momentan daran herauszufinden,
wie ich mit SendMessage einen Eintrag des View selektieren kann.
Kannst du mir da evtl. weiterhelfen? Momentan scrolle ich die TVM_ der MSDN durch
-
Ich dachte es gefunden zu haben, aber der Tree-Eintrag wird nicht markiert.
//8tes item im Tree markieren: ::SendMessage(tview,TVM_SELECTITEM, TVGN_CARET, 8);Der letzte Parameter ist so sicherlich falsch, aber ich habe keine Ahnung,
wie man da sonst mitgeben soll welcher index gesetzt werden soll.
TVITEM habe ich erst gedacht, dann aber nicht in den 4param von SendMessage
gedrückt bekommen
-
Wenn Du ein Treeitem erzeugst, dann bekommst Du ein HTREEITEM Handle.
Dieses müstest Du angeben um den Eintrag zu markieren. Dies wäre der richtige Wert für den letzten Parameter (lParam)
-
Generell ist es keine so gute Idee, einem anderen Prozess Nachrichten mit SendMessage zu schicken. Vor allem nicht, wenn man die Funktion noch nicht kennt.

Die Baumansicht benötigt bei vielen Nachrichten ein HTREEITEM. Das ist die eindeutige Kennung eines Eintrags, aber kein Index. Zur Ermittlung gibt es die Nachricht TVM_GETNEXTITEM. Den ersten Eintrag bekommt man mit TVGN_ROOT, danach muss man sich mit Hilfe der anderen Flags durch die Hierarchie kämpfen, bis man den gewünschten Eintrag gefunden hat.
Zur Übung empfehle ich Dir aber erst mal eine eigene Baumansicht, bis Du ein Gefühl für die nötigen Nachrichten bekommen hast.