2 Fragen zu Dll's ...



  • Mir ging es nicht darum das es nicht geht sondern das ich den Sinn dahinter nicht sehe.
    Ein Hook ist ein Spezialfall.



  • Hmm, und was mach ich jetzt? Es wird einfach keine Message gesendet... 😞

    Auch wenn ich in der KeyboardHookProc-Funktion eine MessageBox ausgeben möchte, dann wird sie einfach nicht aufgerufen. Das sagt mir doch, dass die Funktion nicht mal aufgerufen wird...oder?

    Jiggy



  • Hast du in der DLL bei verwendung der MFC
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    drin?

    An welches Fenster versedest du die Nachricht



  • Unix-Tom schrieb:

    Hast du in der DLL bei verwendung der MFC
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    drin?

    Hmm, egal in welcher Funktion ich AFX_MANAGE_STATE(AfxGetStaticModuleState()); einsetze, immer erscheinen diese Fehler :

    mfcs42.lib(dllmodul.obj) : error LNK2005: __pRawDllMain already defined in hookdll.obj
    mfcs42.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in hookdll.obj
    mfcs42.lib(dllmodul.obj) : warning LNK4006: __pRawDllMain already defined in hookdll.obj; second definition ignored
    mfcs42.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in hookdll.obj; second definition ignored
    Creating library Release/hookdll.lib and object Release/hookdll.exp
    Release/hookdll.dll : fatal error LNK1169: one or more multiply defined symbols found
    Error executing link.exe.

    Unix-Tom schrieb:

    An welches Fenster versedest du die Nachricht

    Naja, an das Hauptfenster der EXE, so verwende ich die Funktion SetupHook() :

    SetupHook(this->m_hWnd);
    

    Ist doch nichts falsch oder ?

    Danke, Jiggy



  • Verwendest du MFC in der DLL?
    Welche DLL hast Du?

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-112764.html



  • Unix-Tom schrieb:

    Welche DLL hast Du?

    Ich verwende eine MFC-Erweiterungs DLL...



  • SChreibst du einen Hook?
    Wenn Ja, warum hälts Du dich nicht an das Bespiel.



  • Muss ich etwa bei dem Beispiel eine standard DLL verwenden? Keine Erweiterungsdll ...



  • Hallo Unix-Tom,

    habe jetzt eine standard DLL geschrieben und sie genau so in mein EXE-Projekt eingebunden wie bei der Erweiterungsdll. Doch jetzt habe ich das Problem, dass wenn ich mein EXE-Projekt kompiliere, dass immer diese Fehler angezeigt werden:

    error C2065: 'SetupHook' : undeclared identifier
    error C2065: 'UninstallHook' : undeclared identifier

    Dann habe ich mir überlegt, dass es sicherlich an der Headerdatei liegt, obwohl ich beide Funktionen, SetupHook und UninstallHook, in der Header unter public angelegt habe. Jedoch habe ich die beiden Funktionen nicht mit extern "C" __declspec (dllexport) angelegt, da sonst diese fehler angezeigt werden:

    Code in Header der DLL:

    class CHookApp : public CWinApp
    {
    public:
    	CHookApp();
    
    	extern "C" __declspec (dllexport) BOOL CALLBACK SetupHook (HWND);
    	extern "C" __declspec (dllexport) BOOL CALLBACK UninstallHook (void);
    .....
    ..
    

    Fehler:

    error C2059: syntax error : 'string'
    error C2238: unexpected token(s) preceding ';'
    error C2059: syntax error : 'string'
    error C2238: unexpected token(s) preceding ';'

    Ich hoffe du kannst mir helfen...
    Danke, Jiggy



  • Hallo,

    kann mir denn niemand helfen... 😞

    Danke, Jiggy



  • In der Datei "stdafx.h" sind alle #include Anweisungen auszukommentieren und dafür das hineinzuschreiben:

    #include <windows.h>

    Da du ja eine Hook-DLL bauen willst, brauchst du die MFC nicht.



  • Danke, aber wenn ich alle includes auskommentiere, dann kommt dieser Fehler:

    fatal error C1189: #error : include 'stdafx.h' before including this file for PCH

    Warum das ?

    Danke, Jiggy


Anmelden zum Antworten