<?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[Brauche hilfe mit HANDLE, bitte !]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Funktion in meinem Programm welche immer Probleme macht, genauer gesagt, ein static HANDLE macht die Probleme.</p>
<p>Das static HANDLE lässt sich (nachdem ich es als Snapshot benutzt habe für Process32First/Next) nicht beenden mit CloseHandle(), mit GetLastError bekomm ich den Fehlercode 6 -&gt; INVALID_HANDLE_VALUE.</p>
<p>Außerdem müsste ich das Handle wieder auf NULL setzen, nachdem ich es geclosed habe, dabei kommt aber immer ein Programmabsturtz (ist auch klar, wenn das Handle nicht geschlossen wurde)</p>
<p>Weiß vielleicht jemand was ich übersehen hätte können ??</p>
<p>Nachdem letzten Process32Next() aufruf, will ich das Handle schließen und auf NULL setzen. Wie kann es sein das der letzte Funktionsaufruf noch erflogreich ausgeführt wird, und danach ist das Handle invalid ???</p>
<p>Ich hoffe ihr könnt mir helfen, danke schon mal fürs Lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/214313/brauche-hilfe-mit-handle-bitte</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 06:30:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/214313.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 May 2008 19:01:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Tue, 27 May 2008 19:01:58 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Funktion in meinem Programm welche immer Probleme macht, genauer gesagt, ein static HANDLE macht die Probleme.</p>
<p>Das static HANDLE lässt sich (nachdem ich es als Snapshot benutzt habe für Process32First/Next) nicht beenden mit CloseHandle(), mit GetLastError bekomm ich den Fehlercode 6 -&gt; INVALID_HANDLE_VALUE.</p>
<p>Außerdem müsste ich das Handle wieder auf NULL setzen, nachdem ich es geclosed habe, dabei kommt aber immer ein Programmabsturtz (ist auch klar, wenn das Handle nicht geschlossen wurde)</p>
<p>Weiß vielleicht jemand was ich übersehen hätte können ??</p>
<p>Nachdem letzten Process32Next() aufruf, will ich das Handle schließen und auf NULL setzen. Wie kann es sein das der letzte Funktionsaufruf noch erflogreich ausgeführt wird, und danach ist das Handle invalid ???</p>
<p>Ich hoffe ihr könnt mir helfen, danke schon mal fürs Lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1517936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1517936</guid><dc:creator><![CDATA[nooooob]]></dc:creator><pubDate>Tue, 27 May 2008 19:01:58 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Tue, 27 May 2008 19:04:49 GMT]]></title><description><![CDATA[<p>Weil dein Code fehlerhaft ist. Wieso muss es überhaupt static sein? Das ist doch schon der erste große Schnitzer, das kann ich sagen, bevor ich deinen Code überhaupt gesehen habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1517940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1517940</guid><dc:creator><![CDATA[Inf.Student]]></dc:creator><pubDate>Tue, 27 May 2008 19:04:49 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Tue, 27 May 2008 19:18:47 GMT]]></title><description><![CDATA[<p>Wenn mein Code nicht fehlerhaft wäre, würde ich hier nicht posten.</p>
<p>Die Funktion macht im Prinzip nichts anderes als eine eigene struct mit Informationen zu füllen. Die Funktion wird aslo so oft aufgerufen bis es keine Prozesse mehr gibt, dann gibt diese auch false zurück.</p>
<p>Das Handle ist deswegen static, weil es z.B. beim 2. Aufruf nicht wieder mit NULL initialisiert werden soll, es soll ja den Wert behalten, den es von CreateToolhelp32Snapshot() bekommen hat, ansonsten würde ja Process32Next() nicht richtig funktionieren (oder irre ich mich???).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1517955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1517955</guid><dc:creator><![CDATA[abcdefghijklmn]]></dc:creator><pubDate>Tue, 27 May 2008 19:18:47 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Tue, 27 May 2008 19:25:21 GMT]]></title><description><![CDATA[<p>Sollen wir hier raten oder was? zeig deinen Code, wenn du Hilfe willst oder hau' ab, man! Wenn ich Mod wäre, wäre der Thread jetzt dicht! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1517959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1517959</guid><dc:creator><![CDATA[Inf.Student]]></dc:creator><pubDate>Tue, 27 May 2008 19:25:21 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Tue, 27 May 2008 19:35:31 GMT]]></title><description><![CDATA[<p>Kannst du bitte dein Ton ändern und dich wie ein normaler Erwachsener (oder Jugendlicher) verhalten? Wir sind hier nicht im Kindergarten, solche Äußerungen kannst du dir in Zukunft sparen.</p>
<p>Hier ist der Code, wenn du so schlau bist wie du tust, wirst du den Fehler ja schnell finden...</p>
<pre><code>bool getProc(struct Process* pr) {

    static HANDLE hSnap = NULL;
    PROCESSENTRY32 *proc;
    HANDLE hProcess;
    DWORD ret;
    char *cPath = new char[MAX_PATH];

    proc-&gt;dwSize = sizeof(PROCESSENTRY32);

    if (hSnap == NULL) {

        hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);

        Process32First(hSnap,proc);

        pr-&gt;ProcName = &quot;Leerlaufprozess\0&quot;;
        pr-&gt;ProcID = proc-&gt;th32ProcessID;

        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,proc-&gt;th32ProcessID);

        if (hProcess != NULL) {

            ret = GetModuleFileNameEx(hProcess,NULL,cPath,MAX_PATH-1);

        }

        if (ret != 0) {
            pr-&gt;ProcPath = cPath;
        } else {
            pr-&gt;ProcPath = NULL;
        }

        return true;
    }

    if(Process32Next(hSnap,proc)) {

        pr-&gt;ProcName = proc-&gt;szExeFile;
        pr-&gt;ProcID = proc-&gt;th32ProcessID;

        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ ,FALSE,proc-&gt;th32ProcessID);

        if (hProcess != NULL) {
            ret = GetModuleFileNameEx(hProcess,NULL,cPath,511);
        }

        if(ret == 0) {
            ret = GetLastError();
            if (ret == 5 || ret == 299) {
                strcpy(cPath,&quot;unable to read path\0&quot;);
            } else {
                sprintf(cPath,&quot;ERROR: %i\0&quot;,ret);
            }

        }

        pr-&gt;ProcPath = cPath;
        return true;

    }

    CloseHandle(hSnap);    // Funktioniert nicht.
    //hSnap = NULL;        
    CloseHandle(hProcess);
    delete proc;
    delete[] cPath;

    return false;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1517968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1517968</guid><dc:creator><![CDATA[abcdefghijklmn]]></dc:creator><pubDate>Tue, 27 May 2008 19:35:31 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Tue, 27 May 2008 20:14:01 GMT]]></title><description><![CDATA[<p>Wo initialisierst du</p>
<pre><code class="language-cpp">PROCESSENTRY32 *proc;
</code></pre>
<p>? Der zeigt doch ins Nirgendwo! Und in so einer Situation static zu benutzen suckt einfach und zeugt von extrem schlechtem Stil.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1517990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1517990</guid><dc:creator><![CDATA[Inf.Student]]></dc:creator><pubDate>Tue, 27 May 2008 20:14:01 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Tue, 27 May 2008 20:38:39 GMT]]></title><description><![CDATA[<p>Ja, ich dachte auch das daran der Fehler liegt, ich weiß das er mit new PROCESSENTRY32 initialisert wird, hab ich auch schon wieder geändert, aber wie gesagt, das ist nicht der Fehler.</p>
<p>Inf.Student, wieso &quot;suckt&quot; es hier static zu verwenden ? Wann verwendest du static ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518013</guid><dc:creator><![CDATA[abcdefghijklmn]]></dc:creator><pubDate>Tue, 27 May 2008 20:38:39 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Tue, 27 May 2008 21:08:24 GMT]]></title><description><![CDATA[<p>Dachte ich mir ja, große Klappe und doch nichts dahinter.</p>
<p>Wenn man sich den Quellcode ansieht, sieht man das ich vergessen habe die HANDLE von hProcess zu schließen, das war der Grund...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518022</guid><dc:creator><![CDATA[abcdefghijklmn]]></dc:creator><pubDate>Tue, 27 May 2008 21:08:24 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Wed, 28 May 2008 06:18:59 GMT]]></title><description><![CDATA[<p>Glaubst du ich habe nix besseres zu tun, als das Forum im Minutentake zu refreshen , um deinen hässlichen Code zu reparieren? Mir ist schon gleich die Lust vergangen, als ich sah, daß du den Pointer nicht initialisiert hast. Da wusste ich, du bist ein totaler Noob, also beschäftige dich erstmal mit den Grundlagen, sonst wird das eh alles nix.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518072</guid><dc:creator><![CDATA[Inf.Student]]></dc:creator><pubDate>Wed, 28 May 2008 06:18:59 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Wed, 28 May 2008 08:26:58 GMT]]></title><description><![CDATA[<p>Du denkst auch du bist was bessers nur weil du Informatik studierst, was ?<br />
Wegen leuten wie dir sollte man hier das annonyme posten nicht mehr erlauben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518146</guid><dc:creator><![CDATA[abcdefghijklm]]></dc:creator><pubDate>Wed, 28 May 2008 08:26:58 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Wed, 28 May 2008 08:36:42 GMT]]></title><description><![CDATA[<p>Was besseres im Sinne von mehr drauf haben, als 95% der restlichen User in diesem Board? Ja das tue ich in der Tat, das heißt aber noch lange nicht, daß ich viel kann. Es sagt lediglich aus, daß in diesem Board vornehmlich Leute wie du posten. Und jetzt genug Offtopic hier. Das war mein Schlußwort in dieser Diskussion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518151</guid><dc:creator><![CDATA[Inf.Student]]></dc:creator><pubDate>Wed, 28 May 2008 08:36:42 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Wed, 28 May 2008 08:42:24 GMT]]></title><description><![CDATA[<p>Einbildung ist auch eine Bildung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518153</guid><dc:creator><![CDATA[haha]]></dc:creator><pubDate>Wed, 28 May 2008 08:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Wed, 28 May 2008 09:11:52 GMT]]></title><description><![CDATA[<p>hi</p>
<p>bin jetzt kein experte, aber soweit ich weiß sagt static, dass die Variable/Handle auch nach ende der funktion weiter benutzt werden kann<br />
und wenn du dann CloseHandle verwendest machst du ja genau den Vorteil wieder zu nichte.</p>
<p>Vielleicht meckert er deshalb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518175</guid><dc:creator><![CDATA[helpme]]></dc:creator><pubDate>Wed, 28 May 2008 09:11:52 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche hilfe mit HANDLE, bitte ! on Wed, 28 May 2008 10:02:23 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Nein, es lag daran das ich das andere Handle nicht geschlossen habe.</p>
<p>Mit static deklarierte Variablen werden beim ersten z.B. static int a = 10; initialisiert, wenn ich die Funktion zum 2. mal aufrufe, hat diese zuweisung keinen Einfluss mehr auf die mit static deklarierte Variable.</p>
<p>Das ist auch Absicht, weil diese Funktion ja in einer Schleife so oft aufgerufen wird, bis sie false zurück gibt. Wenn das Handle nicht static wäre, würde es bei jedem Funktionsaufruf wieder mit NULL initialisiert und es kommt zu einer Endlosschleife. Außerdem soll das Handle den Wert so lange beibehalten bis ich es schließe und wieder auf null setzte, wenn ich es nicht mehr benötige.</p>
<p>Ich schließe das Handle, aber das beduetet nicht das ich die Variable hSnap lösche, hSnap bleibt weiterhin ein Handle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518214</guid><dc:creator><![CDATA[abcdefghij]]></dc:creator><pubDate>Wed, 28 May 2008 10:02:23 GMT</pubDate></item></channel></rss>