Von DLL aus eine Funktion im Hostprogramm(EXE) aufrufen ?
-
Ich sitze nun schon seit Tagen und habe keine Idee, hat Jemand Beispiele wie man das ralisieren kann ?
-
Du könntest einen Funktionszeiger an die DLL übergeben. Stichwort wäre Callback-Funktionen. Ansonsten wenn die exe ein Fenster ist, kannst du auch Windows-Nachrichten schicken und so Aktionen auslösen.
-
BILL schrieb:
Ich sitze nun schon seit Tagen und habe keine Idee, hat Jemand Beispiele wie man das ralisieren kann ?
HI! hier ein kleiner Auszug
//.h typedef char* (*MD5)(char* Str, int size); //.cpp HMODULE hModule; MD5 GetMD5; hModule=LoadLibrary(_T("MD5.dll")); //DLL laden if(hModule==NULL)MessageBox(_T("MD5.dll nicht gefunden!")); GetMD5=(MD5)GetProcAddress(hModule,"MD5"); //Funktion holen char* out; out=GetMD5("Hallo",5); //Funktion in der DLL ausführen MessageBoxA(NULL,out,NULL,NULL); FreeLibrary(hModule);ups lesen will gelernt sein!
tja ich würds per SendMessage machenMFG
-
Entweder wie Pellaeon schrieb (Zeiger übergeben). Oder ... es gäbe da noch eine Sache die IMO funktionieren müsste, bloss hatte ich noch nie die Zeit es auszuprobieren. Und zwar müsstest du aus der .EXE eine Funktion exportieren (ganz normale wie aus einer DLL auch mittels __declspec(dllexport), und ja, das geht). Dann könntest du in der DLL mit GetModuleHandle(0) das module handle der EXE holen, und dann per GetProcAddress den Zeiger auf die Funktion.
In wohl 99% der Fälle eine komplett sinnlose Aktion weil es bessere Wege gibt das zu lösen (z.B. die Funktionen die die DLL braucht in eine 2. DLL auslagern), aber ich denke mir es könnte ein paar Fälle geben wo es nicht uninteressant wäre.