<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[TreeView aus fremder App lesen?]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte z.B. aus Teamspeak2 die Usernamen wissen.<br />
Das Programm hat ein TreeView und die User sind einzelne Items.</p>
<p>Ich bekomms aber einfach nicht hin den Text auszulesen!<br />
Hier mein Ansatz:</p>
<pre><code class="language-cpp">HWND hWnd;
        HWND hWnd2;
        HWND hWnd3;
        HTREEITEM it;
        TVITEMEX tvItem = {0};
        TCHAR buffer[100];

        hWnd = FindWindow(0,&quot;TeamSpeak 2&quot;);
        hWnd2 = FindWindowEx(hWnd,0,&quot;TPanel&quot;,0);
        hWnd3 = FindWindowEx(hWnd2,0,&quot;TTreeView&quot;,0);

    tvItem.mask = TVIF_TEXT | TVIF_HANDLE;
    tvItem.pszText = buffer;
    tvItem.cchTextMax = 100;

    it=TreeView_GetFirstVisible(hWnd3);
    //it=TreeView_GetNextItem(hWnd3, it, TVGN_CHILD);
    tvItem.hItem = it;

    //TreeView_DeleteItem(hWnd3,it); &lt;--- Das funktioniert !!!

    TreeView_GetItem(hWnd3, &amp;tvItem); //Rückgabe der Funktion ist false aber warum?
</code></pre>
<p>Im Buffer steht danach nix drin und der Returnwert von GetItem ist false.<br />
Und nach Spy++ steht in meinen hWnd3 auch das richtige Window-Handle.</p>
<p>Hat irgendjemand ne Ahnung?</p>
<p>THX schon mal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182745/treeview-aus-fremder-app-lesen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 18:29:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182745.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 May 2007 18:19:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TreeView aus fremder App lesen? on Mon, 28 May 2007 18:19:51 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte z.B. aus Teamspeak2 die Usernamen wissen.<br />
Das Programm hat ein TreeView und die User sind einzelne Items.</p>
<p>Ich bekomms aber einfach nicht hin den Text auszulesen!<br />
Hier mein Ansatz:</p>
<pre><code class="language-cpp">HWND hWnd;
        HWND hWnd2;
        HWND hWnd3;
        HTREEITEM it;
        TVITEMEX tvItem = {0};
        TCHAR buffer[100];

        hWnd = FindWindow(0,&quot;TeamSpeak 2&quot;);
        hWnd2 = FindWindowEx(hWnd,0,&quot;TPanel&quot;,0);
        hWnd3 = FindWindowEx(hWnd2,0,&quot;TTreeView&quot;,0);

    tvItem.mask = TVIF_TEXT | TVIF_HANDLE;
    tvItem.pszText = buffer;
    tvItem.cchTextMax = 100;

    it=TreeView_GetFirstVisible(hWnd3);
    //it=TreeView_GetNextItem(hWnd3, it, TVGN_CHILD);
    tvItem.hItem = it;

    //TreeView_DeleteItem(hWnd3,it); &lt;--- Das funktioniert !!!

    TreeView_GetItem(hWnd3, &amp;tvItem); //Rückgabe der Funktion ist false aber warum?
</code></pre>
<p>Im Buffer steht danach nix drin und der Returnwert von GetItem ist false.<br />
Und nach Spy++ steht in meinen hWnd3 auch das richtige Window-Handle.</p>
<p>Hat irgendjemand ne Ahnung?</p>
<p>THX schon mal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293983</guid><dc:creator><![CDATA[Gashirn]]></dc:creator><pubDate>Mon, 28 May 2007 18:19:51 GMT</pubDate></item><item><title><![CDATA[Reply to TreeView aus fremder App lesen? on Tue, 29 May 2007 07:38:49 GMT]]></title><description><![CDATA[<p>Das ist so nicht möglich. Der Speicherbereich den Du angibst um das Item auszulesen liegt in Deinem Prozess. Nicht in dem des Treeviews.</p>
<p>Du müsstest also einen Speicherbereich im fremden Prozess allokieren, diesen befüllen, dan die Nachricht absenden, dann die Daten in Deinem Prozess auslesen.</p>
<p>Jeffrey Richter beschreibt das in seinem DIPS: Desktop Icon Positions Saver!<br />
<a href="http://www.amazon.de/Microsoft-Windows-Programmierung-f%C3%BCr-Experten/dp/3860633368" rel="nofollow">http://www.amazon.de/Microsoft-Windows-Programmierung-für-Experten/dp/3860633368</a></p>
<p>Schau Dir mal die Doku zu den folgenden Funktionen an:<br />
OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, VirtualFreeEx</p>
<p>So in etwa ist das die Reighenfolge der Befehle. Nach dem WriteProcessMemory, kannst Du dann die Anfrage mit SendMessage stellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294209</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 29 May 2007 07:38:49 GMT</pubDate></item><item><title><![CDATA[Reply to TreeView aus fremder App lesen? on Tue, 29 May 2007 20:00:41 GMT]]></title><description><![CDATA[<p>ok danke für den hinweis...<br />
hört sich irgendwie logisch an wenn man mal darüber nachdenkt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Habs jetzt nach deinem Schema programmiert aber ich glaub ich mach da irgendwas falsch...</p>
<p>Schauts euch mal an:</p>
<pre><code class="language-cpp">HWND hWnd;
        HWND hWnd2;
        HWND hWnd3;
        HTREEITEM it;
        HANDLE hproc;
        TCHAR buffer[100];
        DWORD procid;
        TVITEM tvItem={0};
        LPVOID pt;

        hWnd = FindWindow(0,&quot;TeamSpeak 2&quot;);
        hWnd2 = FindWindowEx(hWnd,0,&quot;TPanel&quot;,0);
        hWnd3 = FindWindowEx(hWnd2,0,&quot;TTreeView&quot;,0);

        GetWindowThreadProcessId(hWnd3, &amp;procid);

        hproc = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, procid);

        pt = VirtualAllocEx(hproc, NULL,  sizeof(tvItem), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);

        tvItem.mask = TVIF_TEXT | TVIF_HANDLE ;
        tvItem.pszText = buffer;
        tvItem.cchTextMax = 100;
        it=(HTREEITEM)SendMessage(hWnd3, TVM_GETNEXTITEM, TVGN_ROOT, 0);
        tvItem.hItem = it;

        WriteProcessMemory(hproc, pt,&amp;tvItem, sizeof(tvItem), NULL);

        SendMessage(hWnd3, TVM_GETITEM, 0, (LONG)pt);

        ReadProcessMemory(hproc, pt,&amp;tvItem, sizeof(tvItem), NULL);

        VirtualFreeEx(hproc, pt, 0, MEM_RELEASE);

        CloseHandle(hproc);
</code></pre>
<p>nach dem ausführen kommt ne windows message &quot;Access violation at address...&quot;.<br />
ich glaub ich hab was mit den pointern verhunzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294785</guid><dc:creator><![CDATA[Gashirn]]></dc:creator><pubDate>Tue, 29 May 2007 20:00:41 GMT</pubDate></item><item><title><![CDATA[Reply to TreeView aus fremder App lesen? on Tue, 29 May 2007 21:29:09 GMT]]></title><description><![CDATA[<p>Die Adresse von &quot;buffer [100]&quot; muss noch angepasst werden. Probier mal, ob Du folgende &quot;Obszönitäten :-)&quot; gecastet kriegst :</p>
<pre><code class="language-cpp">// tvItem.pszText = buffer;
tvItem.pszText = (pt + 400);
...
ReadProcessMemory(hproc, pt,&amp;tvItem, sizeof(tvItem), NULL);
ReadProcessMemory(hproc, (pt + 400),&amp;buffer, sizeof(buffer), NULL); // &lt;- noch zusätzlich
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294848</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 29 May 2007 21:29:09 GMT</pubDate></item><item><title><![CDATA[Reply to TreeView aus fremder App lesen? on Wed, 30 May 2007 13:11:23 GMT]]></title><description><![CDATA[<p>jo danke das mit den 400 konnt ich mir nicht erklären deswegen hab ich nochmal mit<br />
VirtualAllocEx nen speicher reserviert...</p>
<p>danke für die super hilfe.</p>
<p>klappt jetzt alles wunderbar.</p>
<p>THX<br />
mfg<br />
-Gashirn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1295201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1295201</guid><dc:creator><![CDATA[Gashirn]]></dc:creator><pubDate>Wed, 30 May 2007 13:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to TreeView aus fremder App lesen? on Wed, 25 Jul 2007 13:26:24 GMT]]></title><description><![CDATA[<p>Hey Gashirn,</p>
<p>kannst Du nochmal Deine komplette Lösung posten (ich hoffe, Du hast sie noch).</p>
<p>Ich habe versucht, die Lösung zu übernehmen, aber bei mir haut das irgendwie nicht hin.</p>
<p>Vielen Dank schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332302</guid><dc:creator><![CDATA[greggy84]]></dc:creator><pubDate>Wed, 25 Jul 2007 13:26:24 GMT</pubDate></item></channel></rss>