<?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[Text ab einem bestimmten Punkt aus einer Edit Box auslesen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte aus einem anderen Programm aus einem RichEdit reinen Text auslesen. Wie man das komplette Ding ausliest hab ich schon hinbekommen, einfach mit WM_GETTEXT. Jedoch wird eine Angabe erwartet, wieviel Zeichen gelesen werden sollen. Ich kann mir ja mit GETTEXTLENGTH alle Zeichen holen. Mein Problem ist jetzt aber, dass in dem RichEdit eine große Menge an Zeichen steht und mich eigentlich nur die aller letzen sagen wir 50 inetressieren. Die vorherigen 5000 nicht... und ich will nicht immer (es wird oft ausgelesen) ALLES auslesen müssen.</p>
<p>Gibt es eine möglichkeit, das irgendwie hinzubekommen? Vielleicht von hinten auslesen oder irgendwas?<br />
Danke für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228088/text-ab-einem-bestimmten-punkt-aus-einer-edit-box-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 19:22:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228088.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Nov 2008 21:20:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Sun, 23 Nov 2008 21:20:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte aus einem anderen Programm aus einem RichEdit reinen Text auslesen. Wie man das komplette Ding ausliest hab ich schon hinbekommen, einfach mit WM_GETTEXT. Jedoch wird eine Angabe erwartet, wieviel Zeichen gelesen werden sollen. Ich kann mir ja mit GETTEXTLENGTH alle Zeichen holen. Mein Problem ist jetzt aber, dass in dem RichEdit eine große Menge an Zeichen steht und mich eigentlich nur die aller letzen sagen wir 50 inetressieren. Die vorherigen 5000 nicht... und ich will nicht immer (es wird oft ausgelesen) ALLES auslesen müssen.</p>
<p>Gibt es eine möglichkeit, das irgendwie hinzubekommen? Vielleicht von hinten auslesen oder irgendwas?<br />
Danke für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619637</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Sun, 23 Nov 2008 21:20:00 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Sun, 23 Nov 2008 22:02:37 GMT]]></title><description><![CDATA[<p>Nach rumforschen hab ich rausgefunden, dass man mit dem RichEdit direkt reden kann.<br />
Aber wieso funktioniert folgender Code nicht?</p>
<pre><code>char cBuffer[36];

            TEXTRANGEW trw;
             trw.chrg.cpMin = 15;
             trw.chrg.cpMax = 50;
             trw.lpstrText = cBuffer; //Fehlermeldung

            SendMessage(edit, EM_GETTEXTRANGE, 0 , (LPARAM)&amp;trw);
</code></pre>
<p>Fehlermeldung: warning: assignment from incompatible pointer type</p>
<p>Hab schon alles mögliche durchprobiert. Er möchte da doch nen Pointer zu nem Buffer haben. Bekomtm er doch.<br />
Das Gleiche schreib ich auf bei andern Sachen, wie &quot;GetWindowText&quot; zB. Dort ist auch ein Pointer to Buffer verlangt und ich mach es so ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619666</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Sun, 23 Nov 2008 22:02:37 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Sun, 23 Nov 2008 23:04:25 GMT]]></title><description><![CDATA[<p>ok... jetzt bin ich soweit gekommen</p>
<pre><code>wchar_t cBuffer[50];
            TEXTRANGEW trw;
             trw.chrg.cpMin = 15;
             trw.chrg.cpMax = 50;
             trw.lpstrText = cBuffer;

            SendMessage(edit, EM_GETTEXTRANGE, 0 , (LPARAM)&amp;trw);
            printf(&quot;%s\n&quot;, cBuffer);
</code></pre>
<p>Ich bekomm jetzt was ausgegeben, nur es sind irgendwelche Zeichen... &quot;ðR£mÿÿÿÿ˜ú!ß‡mHôj(&quot;. Das ist sicherlich nicht das, was in dem RichEdit drinsteht... jemand nde Idee was da los ist?</p>
<p>edit: Ich hab mal SendMessage ausgeben lassen, dann müsste die Anzahl der kopierten Zeichen ausgegeben werden, da bekomm ich immer 0 ?<br />
sehr komisch das ganze <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
kann es sein, dass man dafür erst den Prozess des fremden Programmes injekten muss oder so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619672</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Sun, 23 Nov 2008 23:04:25 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Sun, 23 Nov 2008 23:37:04 GMT]]></title><description><![CDATA[<p>Lumpeh schrieb:</p>
<blockquote>
<p>kann es sein, dass man dafür erst den Prozess des fremden Programmes injekten muss oder so?</p>
</blockquote>
<p>ja so ist es! WM_GETTEXT stellt diesbezüglich einen sonderfall dar, weil es über prozessgrenzen hinweg arbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619685</guid><dc:creator><![CDATA[ascda]]></dc:creator><pubDate>Sun, 23 Nov 2008 23:37:04 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Mon, 24 Nov 2008 13:50:28 GMT]]></title><description><![CDATA[<p>argh, ok danke.</p>
<p>Ich hab das mal mit eine Tabelle gemacht, also auf den process zugreifen. Läuft das im Prinzip genauso ab oder?</p>
<pre><code>GetWindowThreadProcessId(handle_to_edit, &amp;pid);
        process = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ |
                PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION, FALSE, pid);
</code></pre>
<p>und dann muss ich irgendwie auf das edit zugreifen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619905</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Mon, 24 Nov 2008 13:50:28 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Mon, 24 Nov 2008 16:39:19 GMT]]></title><description><![CDATA[<p>Man muss nichts injecten. Du musst aber für TEXTRANGEW den Speicher im fremden Prozess allokieren und diese Adresse dann verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1620035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620035</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 24 Nov 2008 16:39:19 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Mon, 24 Nov 2008 20:58:38 GMT]]></title><description><![CDATA[<p>jo sowas meinte ich.<br />
Werde mal googlen wie man sowas macht. Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1620178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620178</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Mon, 24 Nov 2008 20:58:38 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Mon, 24 Nov 2008 23:57:22 GMT]]></title><description><![CDATA[<p>ich nochmal ..</p>
<p>also ich komme jetzt schonmal soweit, dass mir die SendMessage Funktion nen int zurückgibt, dass Zeichen aus dem RichEdit ausgelesen wurden.<br />
D.h. die Zeichen müssen irgendwie in dem Buffer drin sein, aber ich scheitere daran, diese in eine normales char Array zu kopieren. Dieses verdammte wchar_t!</p>
<pre><code>TEXTRANGE trw, *_trw;    
        GetWindowThreadProcessId(edit, &amp;pid);
        process = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ |
                PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION, FALSE, pid);     
        _trw = (TEXTRANGE*) VirtualAllocEx(process, NULL, sizeof (TEXTRANGE),
                MEM_COMMIT, PAGE_READWRITE);           

             wchar_t cBuffer[50];

             trw.chrg.cpMin = 1;
             trw.chrg.cpMax = 49;
             trw.lpstrText = (LPSTR)cBuffer;
             WriteProcessMemory(process, _trw, &amp;trw, sizeof (TEXTRANGE), NULL);
             printf(&quot;%d\n&quot;,SendMessage(edit, EM_GETTEXTRANGE, 0 , (LPARAM)_trw));

             wprintf(L&quot;%s\n&quot;, cBuffer );
             VirtualFreeEx(process, _trw, 0, MEM_RELEASE);
</code></pre>
<p>So, bei dem Code wird einfach nichts ausgegeben, bis auf 48. Soviel Zeichen hat er erfolgreich kopiert. Doch wohin?<br />
Am besten wäre es, ich hätte gleich ein stink normales char Array.<br />
Kann mir jemand helfen?<br />
Oder mir mal wenigstens sagen, wie ich Testweise mir mal das Array ausgeben kann ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1620247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620247</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Mon, 24 Nov 2008 23:57:22 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Tue, 25 Nov 2008 18:02:54 GMT]]></title><description><![CDATA[<p>Martin auch keine Idee?<br />
Jetzt bekomme ich plätzlich auch keine Zeichen mehr von der SendMessage Funktion. Manchmal gehts manchmal nicht. Hab das Gefühl da stimmt noch was ganz gewaltig nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1620656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620656</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Tue, 25 Nov 2008 18:02:54 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Tue, 25 Nov 2008 18:09:50 GMT]]></title><description><![CDATA[<p>Kann nicht gehen. cBuffer liegt immer noch in Deinem Speicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1620660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620660</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 25 Nov 2008 18:09:50 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Tue, 25 Nov 2008 19:27:07 GMT]]></title><description><![CDATA[<p>Lumpeh schrieb:</p>
<blockquote>
<p>ich nochmal ..</p>
<p>also ich komme jetzt schonmal soweit, dass mir die SendMessage Funktion nen int zurückgibt, dass Zeichen aus dem RichEdit ausgelesen wurden.<br />
D.h. die Zeichen müssen irgendwie in dem Buffer drin sein, aber ich scheitere daran, diese in eine normales char Array zu kopieren. Dieses verdammte wchar_t!</p>
<pre><code>TEXTRANGE trw, *_trw;    
        GetWindowThreadProcessId(edit, &amp;pid);
        process = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ |
                PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION, FALSE, pid);     
        _trw = (TEXTRANGE*) VirtualAllocEx(process, NULL, sizeof (TEXTRANGE),
                MEM_COMMIT, PAGE_READWRITE);           
            
             
             wchar_t cBuffer[50];
             
             trw.chrg.cpMin = 1;
             trw.chrg.cpMax = 49;
             trw.lpstrText = (LPSTR)cBuffer;
             WriteProcessMemory(process, _trw, &amp;trw, sizeof (TEXTRANGE), NULL);
             printf(&quot;%d\n&quot;,SendMessage(edit, EM_GETTEXTRANGE, 0 , (LPARAM)_trw));

             wprintf(L&quot;%s\n&quot;, cBuffer );
             VirtualFreeEx(process, _trw, 0, MEM_RELEASE);
</code></pre>
<p>So, bei dem Code wird einfach nichts ausgegeben, bis auf 48. Soviel Zeichen hat er erfolgreich kopiert. Doch wohin?<br />
Am besten wäre es, ich hätte gleich ein stink normales char Array.<br />
Kann mir jemand helfen?<br />
Oder mir mal wenigstens sagen, wie ich Testweise mir mal das Array ausgeben kann ...</p>
</blockquote>
<p>Hallo,</p>
<p>wenn Du die ProzessID haben willst, musst DU pid vorher mit größer 0 initialisieren:</p>
<p>pid = 1;<br />
GetWindowThreadProcessId(edit, &amp;pid);</p>
<p>sonst returned die Funktion nur mit der ThreadID und die ProcessID wird nicht geliefert. Deshalb heißt diese Foo ja auch genauso.</p>
<p>Ich bin mir aber nicht sicher, ob dieser Hinweis dein ganzes Problem löst, mir ist nur dieses Detail aufgefallen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1620713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620713</guid><dc:creator><![CDATA[CStern]]></dc:creator><pubDate>Tue, 25 Nov 2008 19:27:07 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Tue, 25 Nov 2008 20:59:00 GMT]]></title><description><![CDATA[<p>Wie bekomm ich cBuffer in den andrren Speicher? Mit VirtualAllocEx?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1620779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620779</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Tue, 25 Nov 2008 20:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Tue, 25 Nov 2008 21:01:46 GMT]]></title><description><![CDATA[<p>ja</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1620783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620783</guid><dc:creator><![CDATA[bernibutt]]></dc:creator><pubDate>Tue, 25 Nov 2008 21:01:46 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Tue, 25 Nov 2008 22:21:10 GMT]]></title><description><![CDATA[<p>Vielleicht noch ne kleine Hilfe, wie ich das mache?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1620823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620823</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Tue, 25 Nov 2008 22:21:10 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Tue, 25 Nov 2008 23:37:58 GMT]]></title><description><![CDATA[<p>habs jetzt so:</p>
<pre><code>TEXTRANGE trw, *_trw;    
        pid = 1;
        GetWindowThreadProcessId(edit, &amp;pid);
        process = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ |
                PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION, FALSE, pid);     
        _trw = (TEXTRANGE*) VirtualAllocEx(process, NULL, sizeof (TEXTRANGE),
                MEM_COMMIT, PAGE_READWRITE);           

        printf(&quot;%d, %d\n&quot;, process, pid);
        char* cBuffer;
        char p[50];

         cBuffer = (char*) VirtualAllocEx(process, NULL, 50,
                MEM_COMMIT, PAGE_READWRITE);             

             trw.chrg.cpMin = 2;
             trw.chrg.cpMax = 49;
             trw.lpstrText = (LPSTR)cBuffer;
             WriteProcessMemory(process, _trw, &amp;trw, sizeof (TEXTRANGE), NULL);
             printf(&quot;%d\n&quot;,SendMessage(edit, EM_GETTEXTRANGE, 0 , (LPARAM)_trw));

            ReadProcessMemory(process, cBuffer, p, 50, NULL);
             printf(&quot;%s\n&quot;, p );

             VirtualFreeEx(process, _trw, 0, MEM_RELEASE);
</code></pre>
<p>soweit klappt es, nur er gibt mir jetzt nur das erste Zeichen aus, das er ausliest? Ich finde einfach den Fehler nicht. mein chararray p müsste doch alles von cBuffer kopiert haben ?<br />
Was auch komisch ist. Wenn ich mir sizeof(cBuffer) ausgebe, bekomm ich eine 4. Aber eigentlich müssten es 50 sein. Ich denke 4, weil nur ein Zeichen drin ist. ein char hat doch 4 byte?<br />
Also müsste es der Fehler sein, dass nur ein char in cBuffer kopiert wurde... Jedoch zeigt mir die SendMessage Funktion ja an, dass die gewünschten Zeichen kopiert wurden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1620826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620826</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Tue, 25 Nov 2008 23:37:58 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Wed, 26 Nov 2008 07:32:17 GMT]]></title><description><![CDATA[<p>Beschäftige Dich bitte mal mit Unicode und dem Unterschied zu MBCS!<br />
Dann schau mal in den Puffer rein und Du wirst sehen, dass Du die Daten bekommen hast!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1620924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620924</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 26 Nov 2008 07:32:17 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Wed, 26 Nov 2008 15:46:27 GMT]]></title><description><![CDATA[<p>ok ich musste alles auf wchar_t umstellen und ausgabe funzt jetzt mit wprintf()</p>
<p>danke für den Hinweis...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621224</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Wed, 26 Nov 2008 15:46:27 GMT</pubDate></item><item><title><![CDATA[Reply to Text ab einem bestimmten Punkt aus einer Edit Box auslesen on Wed, 26 Nov 2008 16:50:15 GMT]]></title><description><![CDATA[<p>Nein!<br />
Umstellung auf TCHAR und _tprintf wäre in jedem Falle kompatibler!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621266</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 26 Nov 2008 16:50:15 GMT</pubDate></item></channel></rss>