Kommunikation zwischen Anwendung und Modul
-
Hey,
Ich habe eine Anwendung und eine DLL-Datei, welche als Modul in eine andere Anwendung geladen wird. Nun, habe ich ein Problem. Wie kann ich zwischen Anwendung und dem Modul kommunizieren? Gibt es dafür soetwas wie SendMessage für Fenster?
Danke...
-
mittels funktionen

-
OK, das habe ich noch net gewusst. Danke für den Tip.

Nun habe ich aber das Problem, wie kann ich vom Modul was an meine Anwendung "schicken". Von einer DLL, die keine "Funktionen" der Anwendungen kennt?!
Cya
PS: Ich bin regestriert^^
-
das ist nicht der sinn einer dll (bibilothek) sondern das deine anwendung
auf die dll zurückgreift und sich rausholt was sie braucht.
d.h. du müsstest irgendeine schnittstelle definieren
aber sag doch mal genau was du machen möchtest.
-
Ich selbst weiß noch nicht ganz genau, was ich machen möchte. Ich bin erst in der Planungsphase...
Ansonsten, ich habe eine DLL in einen Fremden Prozess injiziert. Diese DLL soll dann bestimmte Events (Prozessabhängig) abfangen bzw. regestrieren und dann dem Hauptpogramm sagen: "Ja, Prozess XY hat das und das gemacht"

Naja, unter Umständen könnte ich es auch umgekehrt machen (Programm fragt DLL: "hey DLL, sag mal, was hat dein Prozess bzw. dein Programm gerade gemacht")
Naja, muss nochmal überelgen ^^
-
vielleicht ne callback in der dll "registrieren" und diese dann bei einem event
aufrufen, mach dich doch mal sclau über funktionspointer und callbacks
-
Joa, genau, Funktionspointer der DLL übergeben, so mach ich das...
Danke, wär so gar nicht auf diesen Grdanken gekommen

-
Jetzt schon wieder das erste Problem

Anscheined funktioniert GetProcAddress bei Modulen, welche per GetProcessModules (die DLL wurde in den Prozess injiziert) geladen wurden, nicht... (GetLastError()==126)
Hat wer ne Ahnung was ich dagegen tun kan???
-
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/system_error_codes.asp
[ot]
was verstehtst du eigentlich unter modul
-
Ja, die Error-Codes kenne ich auch...
nein, ernsthaft. Ein Modul ist für mich "irgendetwas" (kann sein DLL, ACT, etc.), was ein Prozess für sich läd, bzw. was in den Prozess injiziert wird.
Wenn ich z.B. meine Anwendung starte steht da:
'PB.exe': 'C:\WINDOWS\system32\version.dll' geladen, Keine Symbole geladen.
Für mich ist dann version.dll ein Modul. Ich selbst "injiziere" zur Laufzeit in einen bestimmten Prozess ein Modul, welcher dann mit der Anwendung kommunizieren (soll)...