Wie an die Texte der Items eines fremden TreeControls kommen?
-
Hallo!
Es geht mal wieder um Outlook Express -.-
Ihr kennt ja diese Ordneransicht von OutlookE.
Das ist wie unschwer zu erkennen ein TreeControl.Ich muss rausfinden welcher Ordner ausgewählt wird.
An das TreeControl zu kommen ist mal wieder kein Akt.
Auch das ausgewählte HTREEITEM bekomme ich.CTreeCtrl::GetItemText bringt mir jedoch einen leeren String.
Gut, also mal wieder ein virtuell gezeichnetes Teil.
Um das zu überprüfen habe ich geschaut, ob das Parent die Nachricht TVN_GETDISPINFO empfängt und verarbeitet.
Dem ist nicht so.
Welche weitere Möglichkeiten gibt es denn noch für ein TreeCtrl sich selbst zu zeichnen?
GetCount() liefert die richtige Anzahl von Elementen....aber alles andere versagt.
Gruß,
Kevin
-
Du kannst bestimte Nachrichten nicht aus Deinem Prozessraum an einen anderen senden. Denn der Zeiger, den Du übergibst ist nur in Deinem Prozessraum gültig.
Du müsstest eine DLL in den fremden Prozess injezieren oder Read/WriteProcessMemory verwenden.
-
Hab ich gemacht.....das ganze läuft über meine injizierte DLL.
Ich komm aber trotzdem nicht an den Text..

Ich fange OnSelChange ab...dann hab ich ja direkt einen Pointer auf das Item.
Wenn ich dieses Item versuche zu löschen ist plötzlich der komplette Baum leer -.-
Wenn ich auf den Text des Items zuzugreifen bekomme ich keinen gültigen Wert..... daruas schließe ich dass es über GetDispInfo gezeichent wird...
Also blockiere ich GetDispInfo aber das Teil wird trotzdem noch gezeichnet.
GetDispInfo wird überhaupt nicht aufgerufen... (ich kann blocken....wenn ich zB die SelChange blocke dann kann man nicht mehr zwischen den Ordnern wechseln).Welche Möglichkeiten hat ein TreeCtrl denn alles um sich zu zeichnen?
Per GetDispInfo und Items ganz einfach zu adden...oder?
Gibts noch Möglichkeiten?
Danke für die Unterstützung,
Gruß,
Kevin
-
Ich verstehe nicht ganz was Du vorhast.
LVN_GETDISPINFO wird natürlich nicht aufgerufen, wenn das Treeitem den Text schon enthält.
Wie kommst Du daruf ungestraft in einer fremden Applikation ein Item löschen zu dürfen? Kennst Du die interne Verwaltung von OE so gut, dass Du weist was da passiert. Was ist wenn die Applikation in diesem Moment allokierte Ressourcen freigibt, weil das Löschen ja auch als Benachrichtigung an OE gesendet wird.
-
natürlich wird GetDispInfo nicht aufgerufen wenn das Item schon Text enthält.....allerdings scheint es keine Text zu enthalten, da ich keinen Text bekomme, wenn ich einen abfrage.
Somit dachte ich an GetDispInfo...was aber auch nicht richtig war...wrid auch nicht aufgerufen.... gibt es Alternativen?
Ich muss nur irgendwie an den Text des gerade selektierten Items kommen..
-
Das Ding verwendet NM_CUSTOMDRAW! Also macht es alles selbst inkl. Zeichnen!
Verwende Spy++ und Du kannst es sehen.
Also kommst Du nie an den Text!
-
VERDAMMT!
Vielen Dank....
http://www.nektra.com/products/oeapi/
Ich würde mich damit abfinden wenn die es nicht schaffen würden.
Falls du Zeit haben solltest...lad dir mal die Trialversion runter und schau dir die Demo an.
Die schaffen es auch irgendwie, wenn man einen Ordner anklickt herauszufinden welcher es ist....ebenso bei Nachrichten. Ich muss genau das Gleiche schaffen....tus aber nicht.... ich weiß nicht welchen Trick die haben.. Zum heulen...echt
