<?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[API Calls funktionieren nicht anständig...]]></title><description><![CDATA[<p>1. Beispiel:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;winreg.h&gt;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
   PHKEY phkResult;
   RegCreateKey(HKEY_CURRENT_USER, &quot;Testeintrag\\1&quot;, phkResult);

   return 0;
}
</code></pre>
<p>Das System stürzt sofort ab: Access Violation in der Prozedur RegCreateKey...<br />
Braucht man Benutzersonderrechte um diese Prozeduren aufrufen zu können?</p>
<p>2. Bekomme ich mit GetModuleHandle() immer 0 zurück, deshlab verwende ich dann LoadLibrary(). Kann ich nur auf Module, die ich selbst geladen habe zugreifen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/100253/api-calls-funktionieren-nicht-anständig</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 17:38:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/100253.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 Feb 2005 12:08:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 12:08:33 GMT]]></title><description><![CDATA[<p>1. Beispiel:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;winreg.h&gt;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
   PHKEY phkResult;
   RegCreateKey(HKEY_CURRENT_USER, &quot;Testeintrag\\1&quot;, phkResult);

   return 0;
}
</code></pre>
<p>Das System stürzt sofort ab: Access Violation in der Prozedur RegCreateKey...<br />
Braucht man Benutzersonderrechte um diese Prozeduren aufrufen zu können?</p>
<p>2. Bekomme ich mit GetModuleHandle() immer 0 zurück, deshlab verwende ich dann LoadLibrary(). Kann ich nur auf Module, die ich selbst geladen habe zugreifen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715153</guid><dc:creator><![CDATA[DjFishbone]]></dc:creator><pubDate>Sat, 05 Feb 2005 12:08:33 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 13:00:01 GMT]]></title><description><![CDATA[<p>zu 1.</p>
<p>Ich vermute mal, das du einen Zeiger auf eine existierende Speicherstelle übergeben musst. phkResult ist allerdings irgendetwas, daher richtig:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;winreg.h&gt;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
   HKEY hkResult;
   RegCreateKey(HKEY_CURRENT_USER, &quot;Testeintrag\\1&quot;, &amp;hkResult);

   return 0;
}
</code></pre>
<p>zu 2.<br />
geht mir nicht so, was übergibst du denn?</p>
<p>MfG<br />
DDR-RAM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715191</guid><dc:creator><![CDATA[DDR-RAM]]></dc:creator><pubDate>Sat, 05 Feb 2005 13:00:01 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 13:11:08 GMT]]></title><description><![CDATA[<p>zum Beispiel</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
	if(!(GetModuleHandle(&quot;advapi32.dll&quot;))) MessageBox(0, &quot;Modul nicht gefunden&quot;, &quot;Fehler&quot;, 0);
}
</code></pre>
<p>wenn ich den addressof Operator (&amp;) nehme:<br />
cannot convert parameter 3 from 'struct HKEY__ *** ' to 'struct HKEY__ ** '<br />
kann mir auch net vorstellen, dass PHKEY nicht schon passend definiert ist.<br />
Auf einem anderen PC taucht der Fehler auch auf.<br />
Kanns vielleicht sein, dass meine Headerdateien kaputt sind, Das Stringobjekt scheitert schon bei der Erstellung (string NeuerString), auch wenn &lt;string&gt; oder &lt;string.h&gt; #ingecludet sind <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Danke dass du mir geantwortet hast <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>
]]></description><link>https://www.c-plusplus.net/forum/post/715203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715203</guid><dc:creator><![CDATA[DjFishbone]]></dc:creator><pubDate>Sat, 05 Feb 2005 13:11:08 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 13:20:23 GMT]]></title><description><![CDATA[<p>naja,<br />
wenn du nicht oben in der Datei</p>
<pre><code class="language-cpp">using namespace std;
</code></pre>
<p>schreibst musst du nen string auch entsprechend mit</p>
<pre><code class="language-cpp">std::string StringName;
</code></pre>
<p>deklarieren.</p>
<p>MfG<br />
Auron</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715210</guid><dc:creator><![CDATA[Auron_X]]></dc:creator><pubDate>Sat, 05 Feb 2005 13:20:23 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 13:47:49 GMT]]></title><description><![CDATA[<p>Fehler:<br />
'std' : is not a class or namespace name</p>
<p>egal ob std::string (...) oder using namespace std;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715224</guid><dc:creator><![CDATA[DjFishbone]]></dc:creator><pubDate>Sat, 05 Feb 2005 13:47:49 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 14:26:36 GMT]]></title><description><![CDATA[<p>1. normalerweise brauchst du winreg.h nicht includen, das macht windows.h<br />
2. wenn mehrer User auf deinem System sind oder XP, kannst du diese Funktion nicht benutzen mit HKEY_CURRENT_USER, nimm dann RegOpenCurrentUser();<br />
3. Besser wäre RegCreateKeyEx() zu benutzen.<br />
4. #include &lt;string&gt; ... std::string abc; sollte problemlos funktionieren, wenn nicht, liegt tatsächlich irgendwo ein Problem, muß aber nicht unbediengt bedeuten das die Header defeckt sind. Vieleicht bringt es was stdio mit zu includen. Oft kann es auch eine falsche Compiler einstellung sein (C Projekt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715244</guid><dc:creator><![CDATA[MichaM.]]></dc:creator><pubDate>Sat, 05 Feb 2005 14:26:36 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 14:45:14 GMT]]></title><description><![CDATA[<p>Danke, dass ihr mir geholfen habt! Ich war am verzweifeln. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/715251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715251</guid><dc:creator><![CDATA[DjFishbone]]></dc:creator><pubDate>Sat, 05 Feb 2005 14:45:14 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 14:48:15 GMT]]></title><description><![CDATA[<p>DjFishbone schrieb:</p>
<blockquote>
<p>zum Beispiel</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
	if(!(GetModuleHandle(&quot;advapi32.dll&quot;))) MessageBox(0, &quot;Modul nicht gefunden&quot;, &quot;Fehler&quot;, 0);
}
</code></pre>
<p>wenn ich den addressof Operator (&amp;) nehme:<br />
cannot convert parameter 3 from 'struct HKEY__ *** ' to 'struct HKEY__ ** '<br />
kann mir auch net vorstellen, dass PHKEY nicht schon passend definiert ist.<br />
Auf einem anderen PC taucht der Fehler auch auf.<br />
Kanns vielleicht sein, dass meine Headerdateien kaputt sind, Das Stringobjekt scheitert schon bei der Erstellung (string NeuerString), auch wenn &lt;string&gt; oder &lt;string.h&gt; #ingecludet sind <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Danke dass du mir geantwortet hast <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>
</blockquote>
<p>sagt keiner das PHKEY irgendwie nicht passend definiert ist ^^<br />
PHKEY ist so definiert:</p>
<pre><code class="language-cpp">typedef HKEY *PHKEY;
</code></pre>
<p>ich hab auch nicht gesagt, du sollst die Adresse eines Objekts vom Typ PHKEY übergeben, sondern die eines vom Typ HKEY, die Adresse ist dann vom Typ PHKEY und alles passt, funktioniert übrigens auch (jedenfalls bei mir)</p>
<p>du hättest nur meinen Code komplett kopieren müssen :p</p>
<p>MfG<br />
DDR-RAM</p>
<p>P.S.:<br />
RegCreateKey oder RegCreateKeyEx in diesem Fall besser ist, kommentiere ich nicht <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>
]]></description><link>https://www.c-plusplus.net/forum/post/715253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715253</guid><dc:creator><![CDATA[DDR-RAM]]></dc:creator><pubDate>Sat, 05 Feb 2005 14:48:15 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 15:11:42 GMT]]></title><description><![CDATA[<p>den Buchstaben hab ich überlesen. Aber wieso funktioniert PHKEY nicht, wenn es extra für die Verwendung deklariert worden ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715266</guid><dc:creator><![CDATA[DjFishbone]]></dc:creator><pubDate>Sat, 05 Feb 2005 15:11:42 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 15:22:01 GMT]]></title><description><![CDATA[<p>PHKEY ist ein Pointer zu der Struct HKEY (**HKEY)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715272</guid><dc:creator><![CDATA[MichaM.]]></dc:creator><pubDate>Sat, 05 Feb 2005 15:22:01 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 15:31:19 GMT]]></title><description><![CDATA[<p>MichaM. schrieb:</p>
<blockquote>
<p>PHKEY ist ein Pointer zu der Struct HKEY (**HKEY)</p>
</blockquote>
<p>das problem hatte heute schon mal wer mit diesen blöden microsoft typedefs, die irgendwie an ungarische notation angelehnt sind. HKEY hkey, &amp;hkey sind von der schreibweise doch viel lesbarer als PHKEY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715280</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Sat, 05 Feb 2005 15:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 15:56:56 GMT]]></title><description><![CDATA[<p>net schrieb:</p>
<blockquote>
<p>MichaM. schrieb:</p>
<blockquote>
<p>PHKEY ist ein Pointer zu der Struct HKEY (**HKEY)</p>
</blockquote>
<p>das problem hatte heute schon mal wer mit diesen blöden microsoft typedefs, die irgendwie an ungarische notation angelehnt sind. HKEY hkey, &amp;hkey sind von der schreibweise doch viel lesbarer als PHKEY</p>
</blockquote>
<p>teilweise Geschmackssache <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="😉"
    /><br />
Ich finde es so ok, wie es MS gemacht hat.</p>
<pre><code class="language-cpp">struct HKEY__ { int unused; };
typedef HKEY__ *HKEY;
typedef HKEY *PHKEY;
</code></pre>
<p>bzw.</p>
<pre><code class="language-cpp">typedef void* PVOID;
typedef PVOID HANDLE;
typedef HANDLE HKEY;
typedef HKEY *PHKEY;
</code></pre>
<p>Um es nochmal ganz undeutlich zu sagen.<br />
(Entnommen aus windef.h)</p>
<p>MfG<br />
DDR-RAM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715295</guid><dc:creator><![CDATA[DDR-RAM]]></dc:creator><pubDate>Sat, 05 Feb 2005 15:56:56 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 16:08:12 GMT]]></title><description><![CDATA[<p>DDR-RAM schrieb:</p>
<blockquote>
<p>teilweise Geschmackssache <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="😉"
    /><br />
Ich finde es so ok, wie es MS gemacht hat.</p>
<pre><code class="language-cpp">struct HKEY__ { int unused; };
typedef HKEY__ *HKEY;
typedef HKEY *PHKEY;
</code></pre>
</blockquote>
<p>die ersten beiden zeilen sind nicht verkehrt. hier lässt sich m$ die möglichkeit offen HKEY__ zu erweitern (der user soll ja mit HKEY arbeiten, was ein pointer auf HKEY__ ist). aber dieses typedef von * in P ist blöd und trägt nur zur verwirrung bei</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715304</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Sat, 05 Feb 2005 16:08:12 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sat, 05 Feb 2005 18:51:53 GMT]]></title><description><![CDATA[<blockquote>
<p>aber dieses typedef von * in P ist blöd und trägt nur zur verwirrung bei</p>
</blockquote>
<p>Also mal zum Mitschreiben, bevor hier jemand verwirrtes lernt.<br />
HKEY ist das Handle eines Keys und PHKEY ist die Adresse zu einem HKEY Handle.</p>
<pre><code class="language-cpp">LONG RegCreateKey(

    HKEY hKey,	      // Handle eines Keys 
    LPCTSTR lpSubKey,   // Name des Unterschlüssels zum öffnen/generieren
    PHKEY phkResult     // Adresse des Buffers für das Handle 
   );
</code></pre>
<p>Man sollte eigentlich schon erkannt haben, in welcher Form Onkel Billy seine Typedefs gestaltet HKEY -&gt; H KEY -&gt; Handle Key, PHKEY -&gt; P H KEY -&gt; Pointer Handle KEY.<br />
Was sagt euch dabei jetzt LPCSTR? L P C Str, könnt ihr deuten, oder? <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="😉"
    /><br />
Diese Form der Namensgebung hat seinen Ursprung aus den Win3.11 Zeiten, und ist zur Erleichterung, wenn man das Schema kennt, kann man Code besser Lesen, man erkennt an PHKEY ehr das es ein Pointer ist (durch das P) als durch ein im Code irgendwo hinten in einer Funktion ein &amp; steht vor HKEY.<br />
Sicher schreibt keiner (aus Faulheit?):</p>
<pre><code class="language-cpp">HKEY hkey;
PHKEY = &amp;hkey;
RegCre.....
</code></pre>
<p>würde aber Übersichtlicher sein und man hätte immer den Type und mit seiner Adresse zur Hand.</p>
<p>Schaut euch mal einige Typen an! H - Handle, P - Pointer, STR - String, C - Char, WND - Window, PARAM - Parameter, etc.<br />
Alles nur Abkürzungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/715430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/715430</guid><dc:creator><![CDATA[MichaM.]]></dc:creator><pubDate>Sat, 05 Feb 2005 18:51:53 GMT</pubDate></item><item><title><![CDATA[Reply to API Calls funktionieren nicht anständig... on Sun, 06 Feb 2005 16:04:06 GMT]]></title><description><![CDATA[<p>Aber ich find's doof, dass Microsoft selbst meistens ihre tollen Codevereinbarungen nicht einhalten, z.B. Befehle die mit _ angehen oder z.B. WM_QUIT, obwohl sie selber predigen den Unterstrich zu vermeiden. Und wieso muss eine Microsoft-eigene Funktionsparameter immer eigene Typen haben (WPARAM wParam, LPARAM lParam, HKEY hKey, HINSTANCE hInstance, ...) das hat mich besonders verwirrt als ich mit C++ anfing, und es nervt mich immer noch... <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="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/716027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/716027</guid><dc:creator><![CDATA[DjFishbone]]></dc:creator><pubDate>Sun, 06 Feb 2005 16:04:06 GMT</pubDate></item></channel></rss>