<?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[Dll-Problem]]></title><description><![CDATA[<p>also meine DLL sieht so aus..</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;windows.h&gt;
//---------------------------------------------------------------------------
#pragma argsused

#define LIB_IMPORT __declspec(dllimport)
#define LIB_EXPORT __declspec(dllexport)

extern &quot;C&quot;  _stdcall int Callback(){
return 1;
}

//---------------------------------------------------------------------------
</code></pre>
<p>und das hauptprogramm sieht so aus</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#pragma hdrstop
//PROCESS_ALL_ACCESS
//HANDLE GetProcessHandle( std::string strProcessExe, DWORD dwDesiredAccess )
#include &lt;windows.h&gt;
#include &quot;GetProc.h&quot;
#include &lt;iostream&gt;

//---------------------------------------------------------------------------

#pragma argsused

typedef DWORD WINAPI (CALLBACK* LPFNDLLFUNC1) (HANDLE);
typedef _stdcall int (*LPFNDLLFUNC2) ();
class LoadLibary{
public:
LoadLibary();
~LoadLibary();
LPFNDLLFUNC1 GetProcessId;

LPFNDLLFUNC2 Callback;

private:
HINSTANCE hDLL_1;
HINSTANCE hDLL_2;
};

LoadLibary::LoadLibary(){
hDLL_1 = LoadLibrary(&quot;Kernel32.dll&quot;);
if (hDLL_1 != NULL)
  {
   GetProcessId = (LPFNDLLFUNC1)GetProcAddress(hDLL_1,&quot;GetProcessId&quot;);
   if (!GetProcessId)
   {
     FreeLibrary(hDLL_1);
     GetProcessId = NULL;
     hDLL_1 = NULL;
   }
  }
hDLL_2 = LoadLibrary(&quot;Project1.dll&quot;);
if (hDLL_2 != NULL)
  {
   Callback = (LPFNDLLFUNC2)GetProcAddress(hDLL_2,&quot;Callback&quot;);// Callback ist immer NULL!
   if (!Callback)
   {
     FreeLibrary(hDLL_2);
     Callback = NULL;
     hDLL_2 = NULL;
   }
  }
}

LoadLibary::~LoadLibary(){
FreeLibrary(hDLL_1);
FreeLibrary(hDLL_2);
}

// Instanz zum Aufrufen der Funktionen.
LoadLibary Libary;

int main(int argc, char* argv[])
{
//typedef int (FAR WINAPI *FARPROC)();
HANDLE hProcc = GetProcessHandle(&quot;firefox.exe&quot;,PROCESS_ALL_ACCESS);
DWORD dwProcc = Libary.GetProcessId(hProcc);
HANDLE hHooked = SetWindowsHookEx(WH_CALLWNDPROC,Libary.Callback,NULL,dwProcc);
if ( !hHooked ){
std::cout &lt;&lt; &quot;Error: &quot;&lt;&lt;GetLastError()&lt;&lt;std::endl;
}
       return 0;
}
//---------------------------------------------------------------------------
</code></pre>
<p>Mein problem ist jetzt das Callback immer Null ist &lt;.&lt; und ich find nicht raus wieso, eigentlich sollte er ja die funktion in der DLL finden, weil die DLL selbst hat er gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226773/dll-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 10:57:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226773.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Nov 2008 17:48:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dll-Problem on Wed, 05 Nov 2008 17:51:11 GMT]]></title><description><![CDATA[<p>also meine DLL sieht so aus..</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;windows.h&gt;
//---------------------------------------------------------------------------
#pragma argsused

#define LIB_IMPORT __declspec(dllimport)
#define LIB_EXPORT __declspec(dllexport)

extern &quot;C&quot;  _stdcall int Callback(){
return 1;
}

//---------------------------------------------------------------------------
</code></pre>
<p>und das hauptprogramm sieht so aus</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#pragma hdrstop
//PROCESS_ALL_ACCESS
//HANDLE GetProcessHandle( std::string strProcessExe, DWORD dwDesiredAccess )
#include &lt;windows.h&gt;
#include &quot;GetProc.h&quot;
#include &lt;iostream&gt;

//---------------------------------------------------------------------------

#pragma argsused

typedef DWORD WINAPI (CALLBACK* LPFNDLLFUNC1) (HANDLE);
typedef _stdcall int (*LPFNDLLFUNC2) ();
class LoadLibary{
public:
LoadLibary();
~LoadLibary();
LPFNDLLFUNC1 GetProcessId;

LPFNDLLFUNC2 Callback;

private:
HINSTANCE hDLL_1;
HINSTANCE hDLL_2;
};

LoadLibary::LoadLibary(){
hDLL_1 = LoadLibrary(&quot;Kernel32.dll&quot;);
if (hDLL_1 != NULL)
  {
   GetProcessId = (LPFNDLLFUNC1)GetProcAddress(hDLL_1,&quot;GetProcessId&quot;);
   if (!GetProcessId)
   {
     FreeLibrary(hDLL_1);
     GetProcessId = NULL;
     hDLL_1 = NULL;
   }
  }
hDLL_2 = LoadLibrary(&quot;Project1.dll&quot;);
if (hDLL_2 != NULL)
  {
   Callback = (LPFNDLLFUNC2)GetProcAddress(hDLL_2,&quot;Callback&quot;);// Callback ist immer NULL!
   if (!Callback)
   {
     FreeLibrary(hDLL_2);
     Callback = NULL;
     hDLL_2 = NULL;
   }
  }
}

LoadLibary::~LoadLibary(){
FreeLibrary(hDLL_1);
FreeLibrary(hDLL_2);
}

// Instanz zum Aufrufen der Funktionen.
LoadLibary Libary;

int main(int argc, char* argv[])
{
//typedef int (FAR WINAPI *FARPROC)();
HANDLE hProcc = GetProcessHandle(&quot;firefox.exe&quot;,PROCESS_ALL_ACCESS);
DWORD dwProcc = Libary.GetProcessId(hProcc);
HANDLE hHooked = SetWindowsHookEx(WH_CALLWNDPROC,Libary.Callback,NULL,dwProcc);
if ( !hHooked ){
std::cout &lt;&lt; &quot;Error: &quot;&lt;&lt;GetLastError()&lt;&lt;std::endl;
}
       return 0;
}
//---------------------------------------------------------------------------
</code></pre>
<p>Mein problem ist jetzt das Callback immer Null ist &lt;.&lt; und ich find nicht raus wieso, eigentlich sollte er ja die funktion in der DLL finden, weil die DLL selbst hat er gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610777</guid><dc:creator><![CDATA[Schurke]]></dc:creator><pubDate>Wed, 05 Nov 2008 17:51:11 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Wed, 05 Nov 2008 18:25:46 GMT]]></title><description><![CDATA[<p>Wenn du schon LIB_EXPORT definierst, solltest du es bei der Deklaration von Callback() auch einsetzen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610795</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 05 Nov 2008 18:25:46 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Wed, 05 Nov 2008 18:34:38 GMT]]></title><description><![CDATA[<p>Warsch. ^^ aber ich hab ne ausrede <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 />
Hab nen richtiges tut gesucht wie man ne dll schreibt und leider nicht nur in google kein für mich funktionierendes gefunden sondern zudem auch hier im forum nicht <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="😃"
    /> also bin ich da noch recht deletantisch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610801</guid><dc:creator><![CDATA[Schurke]]></dc:creator><pubDate>Wed, 05 Nov 2008 18:34:38 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Wed, 05 Nov 2008 18:53:21 GMT]]></title><description><![CDATA[<p>Gute Ausrede. :p</p>
<p>Schau doch mal in der MSDN, da werden DLLs auch recht gut erklärt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610812</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 05 Nov 2008 18:53:21 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Wed, 05 Nov 2008 19:20:43 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-14199.html" rel="nofollow">Phoemuex</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610833</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 05 Nov 2008 19:20:43 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Wed, 05 Nov 2008 20:41:14 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Gute Ausrede. :p</p>
<p>Schau doch mal in der MSDN, da werden DLLs auch recht gut erklärt.</p>
</blockquote>
<p>Erklärt ja, aber konkrete zusammenhengende beispiele sind da selten</p>
<p>=&gt; <a href="http://msdn.microsoft.com/de-de/library/1ez7dh12.aspx" rel="nofollow">http://msdn.microsoft.com/de-de/library/1ez7dh12.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610857</guid><dc:creator><![CDATA[Schurke]]></dc:creator><pubDate>Wed, 05 Nov 2008 20:41:14 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Wed, 05 Nov 2008 20:49:07 GMT]]></title><description><![CDATA[<p>Schurke schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Gute Ausrede. :p</p>
<p>Schau doch mal in der MSDN, da werden DLLs auch recht gut erklärt.</p>
</blockquote>
<p>Erklärt ja, aber konkrete zusammenhengende beispiele sind da selten</p>
<p>=&gt; <a href="http://msdn.microsoft.com/de-de/library/1ez7dh12.aspx" rel="nofollow">http://msdn.microsoft.com/de-de/library/1ez7dh12.aspx</a></p>
</blockquote>
<p>Hast du denn auch alle unten stehenden Links gelesen? <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/1610863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610863</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 05 Nov 2008 20:49:07 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Thu, 06 Nov 2008 22:32:31 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Was'n das für'n Durcheinander!? <strong>GetProcId</strong> ist eine <strong>Funktion</strong> und keine Variable! Schreib mal überall <strong>m_</strong> vor die Variablen, Konstruktoren usw.! Das ist dann schon mal ein Anfang.</p>
<p>Gruß</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611548</guid><dc:creator><![CDATA[chezzmatazz]]></dc:creator><pubDate>Thu, 06 Nov 2008 22:32:31 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Thu, 06 Nov 2008 22:57:24 GMT]]></title><description><![CDATA[<p>chezzmatazz tue mirn gefallen und hdf k thx bye</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611552</guid><dc:creator><![CDATA[ascda]]></dc:creator><pubDate>Thu, 06 Nov 2008 22:57:24 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Thu, 06 Nov 2008 23:03:20 GMT]]></title><description><![CDATA[<p>... ich hab mich verhauen. Sorry. GetProcessId steht da ja. Wie komme ich da wieder raus?</p>
<p>Callback = (LPFNDLLFUNC2)GetProcAddress(hDLL_2,&quot;Callback&quot;);</p>
<p>Wenn <strong>hDll_2 != NULL;</strong> ist, muss der Name der Funktion falsch sein. Selbst MS kann einem da ein Bein stellen. Mit falschen Dokumentationen! Alles schon erlebt.</p>
<p>Hast du eine LIB zur DLL? Mach mal im (Text-)Editor auf das Ding (die LIB). Es sieht zwar auf den ersten Blick komisch aus, auf den zweiten Blick aber nicht mehr. Da steht dann der konkrete Name (mit Ausschmückungen wie z.B. !&quot;§ProcName%&amp;/).</p>
<p>Gruss</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611553</guid><dc:creator><![CDATA[chezzmatazz]]></dc:creator><pubDate>Thu, 06 Nov 2008 23:03:20 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Thu, 06 Nov 2008 23:24:24 GMT]]></title><description><![CDATA[<p>chezzmatazz schrieb:</p>
<blockquote>
<p>Wenn hDll_2 != NULL; ist, muss der Name der Funktion falsch sein.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13167">@Schurke</a>:<br />
Prüf einfach mal mit einem &quot;Dependency Walker&quot; o.ä. ob und wieviele Funktionen die eigene DLL enthält und deren <em>genaue</em> Schreibweise.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611555</guid><dc:creator><![CDATA[tieflader]]></dc:creator><pubDate>Thu, 06 Nov 2008 23:24:24 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Fri, 07 Nov 2008 06:55:26 GMT]]></title><description><![CDATA[<p>Ähm... was wird denn hier noch diskutiert? Er hat die Funktion Callcack() nicht exportiert. Logisch, dass er sie nicht per GetProcAddress findet. Mehr gibt's doch nicht zu sagen, oder?</p>
<p>P.S.: chezzmatazz, m_ vor die Konstruktoren schreiben? <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="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611623</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 07 Nov 2008 06:55:26 GMT</pubDate></item><item><title><![CDATA[Reply to Dll-Problem on Fri, 07 Nov 2008 18:56:56 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p>Ähm... was wird denn hier noch diskutiert? Er hat die Funktion Callcack() nicht exportiert. Logisch, dass er sie nicht per GetProcAddress findet. Mehr gibt's doch nicht zu sagen, oder?</p>
<p>P.S.: chezzmatazz, m_ vor die Konstruktoren schreiben? <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="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Das reale problem hier ist das er nicht weiß wie man es exportiert.<br />
( Das ich <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>
<p>//Edit<br />
Also gut, habs hingekriegt.</p>
<p>Mit</p>
<pre><code class="language-cpp">extern &quot;C&quot; __declspec( dllexport ) int __stdcall Callback(){
//Code...
return 1;
}
</code></pre>
<p>danke für den tipp mit depency walker</p>
<p>Jedoch...</p>
<p>jetzt hab ich ein neues problem, und zwar liefer mir sobald</p>
<pre><code class="language-cpp">extern &quot;C&quot; __declspec( dllexport ) LRESULT CALLBACK CallWndProc( int nCode, WPARAM wParam, LPARAM lParam ){
//Log.open(&quot;F:\\Log.txt&quot;);
CWPSTRUCT * cwStrct = (CWPSTRUCT *)lParam;
if ( cwStrct-&gt;message == WM_CREATE  ){
  CREATESTRUCT * cInfo = (CREATESTRUCT *)wParam;
  //Log.seekp(ios::end);
  //Log.write(cInfo-&gt;lpszName,strlen(cInfo-&gt;lpszName));
  //Log.write(&quot;\n&quot;,1);
  //Log.close();
  if ( cInfo-&gt;lpszName != NULL )MessageBox(NULL,cInfo-&gt;lpszName,&quot;Info&quot;,MB_OK);
  }
return CallNextHookEx(NULL,nCode,wParam,lParam);
}
</code></pre>
<p>aufgerufen wird mein system &quot;Fehler 1400 wrong window handle&quot; und der prozess von dem der WM Create stammt stürzt ab ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611875</guid><dc:creator><![CDATA[Schurke]]></dc:creator><pubDate>Fri, 07 Nov 2008 18:56:56 GMT</pubDate></item></channel></rss>