<?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[Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist]]></title><description><![CDATA[<p>Hey!</p>
<p>Ich habe eine DLL geschrieben, welche in einen fremden Prozess injiziert wird.<br />
Nun möchte ich, dass mein Programm mit der DLL kommunizieren kann, genauer:</p>
<p>Das Programm soll bestimmte Funktionen der DLL steuern.<br />
Die DLL soll bestimmte Funktionen des Programms steuern.</p>
<p>Also zB. soll das Programm DLLFunc() der DLL ausführen können. Weiters soll die DLL APPFunc() des Programmes ausführen können.</p>
<p>Wie macht man das?<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207953/programm-soll-mit-dll-kommunizieren-welche-in-fremdem-prozess-injiziert-ist</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 10:44:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207953.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Mar 2008 23:35:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Wed, 12 Mar 2008 23:35:00 GMT]]></title><description><![CDATA[<p>Hey!</p>
<p>Ich habe eine DLL geschrieben, welche in einen fremden Prozess injiziert wird.<br />
Nun möchte ich, dass mein Programm mit der DLL kommunizieren kann, genauer:</p>
<p>Das Programm soll bestimmte Funktionen der DLL steuern.<br />
Die DLL soll bestimmte Funktionen des Programms steuern.</p>
<p>Also zB. soll das Programm DLLFunc() der DLL ausführen können. Weiters soll die DLL APPFunc() des Programmes ausführen können.</p>
<p>Wie macht man das?<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473384</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Wed, 12 Mar 2008 23:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Thu, 13 Mar 2008 07:42:02 GMT]]></title><description><![CDATA[<p>Zuerst möchte ich wissen warum Du das willst?</p>
<p>Ansonsten würde ich Dir die Forum Suche mal anbefehlen. Dies ist in den letzten Tagen sooft behandelt worden, dass bestimmt auch was für Dich dabei ist.</p>
<p>PS: Dieses Forum mutiert zur Anfragestelle für Hooks und DLL Injezierung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473424</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 13 Mar 2008 07:42:02 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Thu, 13 Mar 2008 16:25:50 GMT]]></title><description><![CDATA[<p>Die Suche funktioniert leider nicht so, wie man es sich erwartet. Weiters wüsste ich nicht, nach was ich suchen soll.</p>
<p>Warum ich das will? Weil ich es brauche...<br />
Mein Programm soll steuern, was die injizierte DLL tun soll. Ob sie nun DLLFunc1() ausführt, oder DLLFunc2().<br />
Und die DLL soll APPFunc1() oder APPFunc2() ausführen, damit mein Programm weiß, welches Ergebnis die DLL-Funktion erhalten hat.</p>
<p>Ich denke es würde auch reichen, wenn mein Programm eine Variable in der DLL ändern kann (bool). Aber die DLL muss eine Funktion meines Programmes ausführen können.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473772</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Thu, 13 Mar 2008 16:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Thu, 13 Mar 2008 18:22:27 GMT]]></title><description><![CDATA[<p>übergebe der DLL- Funktion einen geeigneten Functionszeiger als Callback- Funktion.</p>
<p>Die DLL- Funktion kann diese rufen - mit geeigneten Parametern.</p>
<p>Die Callback- Funktion des aufrufenden Programmes kann gemaess der Parameter handeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473847</guid><dc:creator><![CDATA[DerAltenburger]]></dc:creator><pubDate>Thu, 13 Mar 2008 18:22:27 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Thu, 13 Mar 2008 18:57:12 GMT]]></title><description><![CDATA[<p>Danke für den Tipp, aber dann könnte die DLL nur eine Funktion meines Programmes aufrufen, wenn es vorher umgekehrt passiert. Das ist schlecht.<br />
Die DLL soll, wenn ein Ereignis in ihrem Code passiert, eine Funktion meines Programmes ausführen. Das muss dazu in meinem Fall leider sehr schnell gehen.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473861</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Thu, 13 Mar 2008 18:57:12 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Thu, 13 Mar 2008 20:10:00 GMT]]></title><description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Inter-process_communication" rel="nofollow">http://en.wikipedia.org/wiki/Inter-process_communication</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473913</guid><dc:creator><![CDATA[Black Shadow]]></dc:creator><pubDate>Thu, 13 Mar 2008 20:10:00 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Fri, 14 Mar 2008 00:40:43 GMT]]></title><description><![CDATA[<p>Ein einfaches Beispiel dazu wäre toll.<br />
Nochmals zum Verständnis: Ein Prozess ist fremd, in diesem wird nur meine DLL ausgeführt.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474034</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Fri, 14 Mar 2008 00:40:43 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Fri, 14 Mar 2008 06:47:05 GMT]]></title><description><![CDATA[<p>ceplusplus@loggedoff schrieb:</p>
<blockquote>
<p>Die DLL soll, wenn ein Ereignis in ihrem Code passiert, eine Funktion meines Programmes ausführen. Das muss dazu in meinem Fall leider sehr schnell gehen.</p>
</blockquote>
<p>Hier knirscht es doch. Du musst den aktuellen Thread verlassen eine IPC Funkti0on ausführen auf das Ergebnis warten und dann erst weitermachen. Du kanst Dir vorstellen, dass dies nicht unbedingt schnell ist.</p>
<p>Schau Dir an, was Spy++ mit einer Applikation macht, wenn alle Nachrichten eines Fensters getraced werden.</p>
<p>Welchen Sinn soll diese Aktion haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474057</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 14 Mar 2008 06:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Fri, 14 Mar 2008 11:45:29 GMT]]></title><description><![CDATA[<p>ceplusplus@loggedoff schrieb:</p>
<blockquote>
<p>Danke für den Tipp, aber dann könnte die DLL nur eine Funktion meines Programmes aufrufen, wenn es vorher umgekehrt passiert. Das ist schlecht.<br />
Die DLL soll, wenn ein Ereignis in ihrem Code passiert, eine Funktion meines Programmes ausführen. Das muss dazu in meinem Fall leider sehr schnell gehen.</p>
<p>MfG</p>
</blockquote>
<p>Damit kannst Du Hunderte verschiedene Funktionen rufen.<br />
Du musst nur passende Callback- Parameter festlegen/ übergeben.<br />
Erster Paramer z.B. Funktionsnummer, die weiteren was passendes oder NULL.</p>
<p>Du rufst zwar immer nur die eine Funktion, die kann aber dann die Funktion verteilen im Hauptprogramm.</p>
<p>Hab das mal in ner DLL gemacht, die ein Bild usmessen soll aber keine Oberfläche hat. Mit passenden Parmetern werden dann in einer Callback- Funktion die nötigen Mess- Koordinaten abgefragt. Die Eingabe der Koordinaten erfolgt dabei immer passend im Hauptprogramm in der visuellen Oberfläche.</p>
<p>Gruss<br />
frank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474217</guid><dc:creator><![CDATA[DerAltenburger]]></dc:creator><pubDate>Fri, 14 Mar 2008 11:45:29 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Fri, 14 Mar 2008 18:48:54 GMT]]></title><description><![CDATA[<p>Es geht nicht um Performance, aber es soll nicht Sekunden lang dauern...</p>
<p>Nochmals:<br />
Mein Programm soll Variablen in einer DLL verändern können, welche in einem fremden Prozess ausgeführt wird (Funktion ausführen, welche die Variable verändert?).<br />
Und die DLL soll <strong>unabhängig</strong> eine Funktion meines Programmes ausführen können.</p>
<p>Wie mache ich das?<br />
Wie kann mein Programm eine Funktion einer DLL ausführen, welche per CreateRemoteThread() in einen fremden Prozess geladen wurde?<br />
Und wie kann die DLL, welche im fremden Prozess ausgeführt wird, eine Funktion meines Programmes ausführen?<br />
Würde mir bitte jemand ein Codebeispiel geben...</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474484</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Fri, 14 Mar 2008 18:48:54 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Fri, 14 Mar 2008 19:46:25 GMT]]></title><description><![CDATA[<p>Die lösung ist wie o.g. IPC!<br />
Vielleicht reicht ja schon eine COM-Artige message schleife...</p>
<p>DLL:</p>
<pre><code class="language-cpp">//------------ DLL SERVER ----------------------------------------------------
LRESULT DllFunc1();
INT UserMessageId = 0;

LRESULT CALLBACK DllMessageHandler(HWND hWnd, INT msg, WPARAM wParam, LPARAM lParam)
{
    // Kein switch wg. nicht const UserMessageId
    if(msg == WM_CLOSE)
        PostQuitMessage(0);
    else if(msg == UserMessageId)
        return DllFunc1(); // MAGIE
    else
        return DefWindowProc(hWnd, msg, wParam, lParam);
}

void InitDllThread()
{
    WNDCLASS cls1 = {0};
    cls1.lpfnWndProc = DllMessageHandler;
    cls1.lpszClassName = _T(&quot;KlasseKlasse&quot;);
    RegisterClass(&amp;cls1);
    UserMessageId = RegisterWindowMessage(&quot;CallDllFunc1&quot;);
    HWND hWnd = CreateWindow(_T(&quot;KlasseKlasse&quot;), _T(&quot;WichtigerEindeutigerName&quot;),
        0, 0, 0, 0, 0, NULL, NULL, NULL, NULL);
    MSG msg;
    while(1)
    {
        if(PeekMessage(&amp;msg, hWnd, 0, 0, PM_REMOVE))
        {
            if(msg == WM_QUIT)
                break;
            TranslateMessage(&amp;msg); // Brauch man das überhaupt?
            DispatchMessage(&amp;msg);
        }
        else
            Sleep(100); // Wir wollen die CPU nicht überhitzen
                        // Könnten hier aber andere sachen machen(GetMessage
                        // wäre auch möglich, wenn wir wirklich nichts wollen).
    }
}

LRESULT DllFunc1()
{
    printf(&quot;Diese funktion wurde durch eine externe aufforderung aufgerufen!&quot;);
    return 0;
}

//------------------------ CLIENT -------------------------------------------
int main(int argc, _TCHAR* argv[])
{
    INT UserMessageId = RegisterWindowMessage(&quot;CallDllFunc1&quot;);
    HWND hWnd = FindWindow(_T(&quot;KlasseKlasse&quot;), _T(&quot;WichtigerEindeutigerName&quot;));
    // DllFunc1 aufrufen
    SendMessage(hWnd, UserMessageId, NULL, NULL);
    // Beenden der dll
    SendMessage(hWnd, WM_QUIT, NULL, NULL);
}
</code></pre>
<p>So ich hoffe nun, dass das richtig ist(ich hab das noch nie benutzt!).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474517</guid><dc:creator><![CDATA[gegegge]]></dc:creator><pubDate>Fri, 14 Mar 2008 19:46:25 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Fri, 14 Mar 2008 19:49:11 GMT]]></title><description><![CDATA[<p>Die bösen seiten des zu-faul-zum-einloggen-seins: Bei RegisterWindowMessage: _T vor den string!</p>
<p>Und der rückkanal funktionier ziemlich gleich, nur dass eben der client nun ein unsichtbares! fenster erstellt, und die dll SendMessge benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474518</guid><dc:creator><![CDATA[ghegege]]></dc:creator><pubDate>Fri, 14 Mar 2008 19:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Fri, 14 Mar 2008 20:08:45 GMT]]></title><description><![CDATA[<p>Danke erstmal, das werd ich beizeiten ausprobieren.<br />
Aber, geht es nicht noch einfacher als dass die DLL und mein Programm jeweils ein unsichtbares Fenster erzeugen müssen?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474526</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Fri, 14 Mar 2008 20:08:45 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Fri, 14 Mar 2008 20:11:31 GMT]]></title><description><![CDATA[<p>Named Pipes, oder sockets oder shared Memory.<br />
Nur musst du bei den WindowMessages kein eigenes nachrichtenprotokoll etc. schreiben, was die arbeit schon erleichtern kann, aber was eigentlich kein problem ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474528</guid><dc:creator><![CDATA[gegege]]></dc:creator><pubDate>Fri, 14 Mar 2008 20:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Fri, 14 Mar 2008 23:55:43 GMT]]></title><description><![CDATA[<p>Named pipes werde ich mir noch googeln, shared memory hört sich jedoch simpel an. Bekomme ich dazu ein einfaches Beispiel?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474616</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Fri, 14 Mar 2008 23:55:43 GMT</pubDate></item><item><title><![CDATA[Reply to Programm soll mit DLL kommunizieren, welche in fremdem Prozess injiziert ist on Sat, 15 Mar 2008 08:38:28 GMT]]></title><description><![CDATA[<p><a href="http://msdn2.microsoft.com/en-us/library/aa366551(VS.85).aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/aa366551(VS.85).aspx</a><br />
hier sollte alles stehen, nur dass du den zugriff auf das file mapping noch mit einem event/semaphore synchronisieren solltest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474659</guid><dc:creator><![CDATA[gegeggeg]]></dc:creator><pubDate>Sat, 15 Mar 2008 08:38:28 GMT</pubDate></item></channel></rss>