<?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[Handle aus anderem Prozess ohne DuplicateHandle verwenden]]></title><description><![CDATA[<p>Hallo Leute!<br />
Mein Programm geht mittels NtQuerySystemInformation systemweit die Handles durch, bis es das richtige gefunden hat.<br />
Die Frage ist jetzt, ob es eine Möglichkeit gibt, dieses Handle so zu nutzen als würde es das Programm selbst nutzen, aus dem das Handle stammt. Ich möchte damit einen Aufruf von DuplicateHandle umgehen, weil es damit zu Problemen gekommen ist - das Programm, das das Handle erstellt hatte, funktionierte nicht mehr richtig, nachdem ich das Handle über DuplicateHandle in meinem eigenen verwendet hatte.</p>
<p>Eine Möglichkeit wäre doch, dass man mit WriteProcessMemory und CreateRemoteThread etwas zusammenwürfelt, oder? Ich hoffe aber, dass es noch elegantere Möglichkeiten gibt.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215215/handle-aus-anderem-prozess-ohne-duplicatehandle-verwenden</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 19:43:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215215.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Jun 2008 22:36:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Handle aus anderem Prozess ohne DuplicateHandle verwenden on Sat, 07 Jun 2008 22:36:27 GMT]]></title><description><![CDATA[<p>Hallo Leute!<br />
Mein Programm geht mittels NtQuerySystemInformation systemweit die Handles durch, bis es das richtige gefunden hat.<br />
Die Frage ist jetzt, ob es eine Möglichkeit gibt, dieses Handle so zu nutzen als würde es das Programm selbst nutzen, aus dem das Handle stammt. Ich möchte damit einen Aufruf von DuplicateHandle umgehen, weil es damit zu Problemen gekommen ist - das Programm, das das Handle erstellt hatte, funktionierte nicht mehr richtig, nachdem ich das Handle über DuplicateHandle in meinem eigenen verwendet hatte.</p>
<p>Eine Möglichkeit wäre doch, dass man mit WriteProcessMemory und CreateRemoteThread etwas zusammenwürfelt, oder? Ich hoffe aber, dass es noch elegantere Möglichkeiten gibt.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524896</guid><dc:creator><![CDATA[JohnLe]]></dc:creator><pubDate>Sat, 07 Jun 2008 22:36:27 GMT</pubDate></item><item><title><![CDATA[Reply to Handle aus anderem Prozess ohne DuplicateHandle verwenden on Sun, 08 Jun 2008 08:10:59 GMT]]></title><description><![CDATA[<p>Mein Problem genau ist, dass ich ein Socket öffne und dann getsockname darauf verwende. Danach ist es im Client-Programm zwar immernoch möglich, Daten zu versenden, es werden aber keine mehr empfangen oder zumindest verarbeitet. Dieses Verhalten ist mir jetzt bereits bei mehreren Programmen aufgefallen, lediglich ein DirectX-Spiel ändert sein Verhalten nicht.</p>
<p>Ich hätte mein Problem wohl gleich direkt nennen sollen, sry.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524958</guid><dc:creator><![CDATA[JohnLe]]></dc:creator><pubDate>Sun, 08 Jun 2008 08:10:59 GMT</pubDate></item><item><title><![CDATA[Reply to Handle aus anderem Prozess ohne DuplicateHandle verwenden on Wed, 11 Jun 2008 09:39:21 GMT]]></title><description><![CDATA[<p>Wenn du den Handle (HWND) des anderen Programmes hast, kannst Du damit Nachrichten an das andere Programm direkt schicken mit SendMessage(hwndFremd, ID_XXX,wParam,lParam). DuplicateHandle() ist nicht erforderlich !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526866</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Wed, 11 Jun 2008 09:39:21 GMT</pubDate></item><item><title><![CDATA[Reply to Handle aus anderem Prozess ohne DuplicateHandle verwenden on Wed, 11 Jun 2008 11:18:31 GMT]]></title><description><![CDATA[<p>berniebutt schrieb:</p>
<blockquote>
<p>Wenn du den Handle (HWND) des anderen Programmes hast, kannst Du damit Nachrichten an das andere Programm direkt schicken mit SendMessage(hwndFremd, ID_XXX,wParam,lParam). DuplicateHandle() ist nicht erforderlich !</p>
</blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17339">@berniebutt</a> :<br />
Anhand der Anmerkung bzgl. NtQuerySystemInformation hätte Dir klar sein müssen, dass es sich um OS-Handles und nicht Fenster-Handles handelt.</p>
<p>@JohnLe:<br />
1. OS-Handles haben nur innerhalb enes Prozesses gültigkeit. Man beötigt also DuplicateHandle, wie sonst willst Du garantieren, dass dieses Handle nicht ungülig wird?<br />
2. Nicht alle Handles lassen sich außerhalb eines anderen Prozessesnutzen. Siehe Doku to DuplicateHandle:<br />
<a href="http://msdn.microsoft.com/en-us/library/ms724251(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms724251(VS.85).aspx</a><br />
3. Sockets sind ein ganz gesondertes Spiel, siehe WSADuplicateSocket!<br />
4. Verstehe ich nicht was Dein erstes Posting mit Deinem zweiten zu tun hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526944</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 11 Jun 2008 11:18:31 GMT</pubDate></item><item><title><![CDATA[Reply to Handle aus anderem Prozess ohne DuplicateHandle verwenden on Wed, 11 Jun 2008 12:15:04 GMT]]></title><description><![CDATA[<p>@ Martin Richter: Sorry, kann nicht alles wissen! War nur ein Vorschlag, der vielleicht hätte helfen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526978</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Wed, 11 Jun 2008 12:15:04 GMT</pubDate></item><item><title><![CDATA[Reply to Handle aus anderem Prozess ohne DuplicateHandle verwenden on Sat, 14 Jun 2008 08:03:29 GMT]]></title><description><![CDATA[<p>Danke für die Antworten!</p>
<p>@ Martin Richter<br />
Zu 1: Ja, stimmt. Ich hätte mir nur erhofft, dass es eine andere Funktion gibt, die vielleicht besser/anders arbeitet.</p>
<p>Zu 2: Danke, hätte mir die Doku vorher schon durchlesen sollen.<br />
Aber so als kleine Anmerkung, falls später nochmal jemand nachliest - Sockets lassen sich durchaus mit DuplicateHandle weiterverwenden. Das Problem dabei ist nur, dass der Prozess, der das Socket erstellt hat, dann normalerweise keine Daten mehr auf dem Socket empfängt.</p>
<p>Zu 3: WSADuplicateSocket scheint perfekt zu sein. Ich muss das aus dem Prozess heraus aufrufen, der das Socket erstellt hat. Dazu muss ich dann WriteProcessMemory und CreateRemoteThread verwenden, oder?</p>
<p>Zu 4: Mit meinem zweiten Posting wollte ich noch sagen, dass es um Sockets geht und dass das Programm, das das Socket erstellt hat, keine Daten mehr auf dem Socket empfängt, nachdem ich das Socket in meinem Programm in einer Funktion verwendet habe. Das ist bisher bei jedem Programm, außer einem DirectX-Spiel, passiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528781</guid><dc:creator><![CDATA[JohnLe]]></dc:creator><pubDate>Sat, 14 Jun 2008 08:03:29 GMT</pubDate></item></channel></rss>