DLL: Client Funktion aufrufen
-
Hi!
Ich habe in einer DLL einen simplen Message Handler. Wenn dieser die Funktion in der DLL aufruft, soll in dieser Funktion eine Client Funktion aufgerufen werden:
DLL
Meessage
|-> CMyDLLMessage()
{
MyClient()->CallClientFunction();
}Aber wie bekomme ich ein Handle auf den Client?
Danke im Voraus!!
mfg
-
Hi,
du musst dazu die Client-Funktion genau wie die dll Funktionen mit __declspec(dllexport) deklarieren.
Dann kommst du in der Dll über
GetProcAddress(NULL, "Funktion")an den Zeiger auf die Funktion.
Grüße Rapha
-
Cool Dnake. Genau das was ich gesucht habe! Funktioniert Perfekt

mfg
-
Moin
Ich habe das gleiche jetzt nochmal gebraucht und zwar mit einem Parameter in der Funtktion - aufeinmal gings nicht mehr
DLL:
__declspec(dllimport) void __cdecl Callback (unsigned); typedef void (CALLBACK *Callback) (unsigned); //.... FARPROC myFunc = (Callback)GetProcAddress(NULL, "Callback"); myFunc((unsigned)m_cList.GetItemData(iItem));Client:
//h extern "C" __declspec(dllexport) void Callback(unsigned id); //cpp void Callback(unsigned id) {}Ich probierte auch folgende Methode:
Client//h extern "C" __declspec(dllimport) void Callback(unsigned id); //cpp FARPROC myFunc = (FARPROC)GetProcAddress(NULL, "Callback"); myFunc((unsigned)m_cList.GetItemData(iItem));Mein Kompilier Error:
error C2197: 'int (__stdcall *)(void)' : Zu viele Parameter uebergeben
Was mach ich da falsch??
Danke im Voraus!!
mfg michael
-
Hi!
Ich habe ein gutes Bso. gefunden:
http://www.henkessoft.de/api6.htmtypedef BOOL (WINAPI *PFN_ELLIPSE) (HDC, int, int, int, int); PFN_ELLIPSE pfn_Ellipse = (PFN_ELLIPSE) GetProcAddress(hLib, "Ellipse");Aber ich verstehe da nicht, woher PFN_ELLIPSE kommt? Weiß das jemand zufällig?
Danke!!! mfg
-
Bin ich dumm

Die Lösung war die ganze Zeit vor mir
typedef void (CLBFUNC)(unsigned); CLBFUNC* pFunction; VERIFY(pFunction = (CLBFUNC*)::GetProcAddress(NULL,"Callback")); (*pFunction)(10);Thx,
mfg