Moin!
Ich habe hier eine
DLL in mein Programm eingebunden und diese soll mit meinem Hautpprogramm per
IPC kommunizieren, es funktioniert auch soweit, dass das Programm die Messages empfängt und auswerten kann nur kann ich aus dem Hauptprogramm heraus keine Result setzen, bzw. es dann in der
DLL nicht auswerten. Ich habe keine Ahnung wieso und da die Materie für mich noch relativ neu ist, dachte ich mir, ich frage euch einfach mal um Rat.
Achja, die Forensuche habe ich schon bemüht, doch die Lösungen aus den ~20 Threads scheinen bei mir nicht zu funktionieren.
Ein bischen Code:
Die deklarationen:
Delphi-Quellcode:
const
// Define the Message itself
WM_AZURA_IPC = WM_USER + 4242;
// Define the possible Values
IPC_AZURA_QUIT = 0;
IPC_AZURA_GETVERSION = 1;
Mainprog. Code:
Delphi-Quellcode:
procedure IPCMessageHandler(AMsg: TMessage);
begin
if AMsg.msg = WM_AZURA_IPC then
begin
case AMsg.WParam of
IPC_AZURA_QUIT: FrmMainAzura.Close;
IPC_AZURA_GETVERSION: AMsg.Result := DWORD(PChar('Foo'));
end;
end;
end;
Dll-Code
Delphi-Quellcode:
function Create(AHandle: HWND): Bool; export;
begin
ShowMessage(PChar(SendMessage(AHandle, WM_USER + 4242, 1, 0))); // FEHLER: Showmessage ist leer.
SendMessage(AHandle, WM_USER + 4242, 0, 0); // Funktioniert! Main-Prog wird geschlossen
end;
Ich hoffe ihr könnt mir helfen
Gruß,
Max