![]() |
Modulkommunikation
gegeben sei diese dll:
Delphi-Quellcode:
kann so etwas funktionieren, wenn das hauptprogramm die message empfängt und dann setrequest aufruft? und lässt das delay das abarbeiten der setrequest-funktion zu? soweit ich weiss, ist es ja nicht so "streng" wie sleep;
library communicating;
uses ..... ... var mainhandle: hWND; request:integer; const WM_REQUEST = WM_USER + 1; function init(handle:hWND):boolean; begin hWND := handle; result:=true; end; function requestarrayvalue(arrayindex:integer;elementindex:integer):integer; begin request:=-1; sendmessage(mainhandle,WM_REQUEST,arrayindex,elementindex); while request = -1 do delay(1); end; function setrequest(value:integer):boolean; begin request:=value; end; exports .....; end. gibt es eine modelllösung für die kommunikation von dll zu hauptprogramm? |
Re: Modulkommunikation
*push*
soll ich es als kompliment nehmen, dass ihr nicht antwortet, weil meine fragen immer so anspruchsvoll sind, oder wollt ihr mir zu verstehen geben, dass ihr mich nicht mögt und ich wieder gehen soll? :cry: |
Re: Modulkommunikation
Zitat:
1, Du solltest für sowas eher PostMessages nehmen. Damit wird die Message sofort zugestellt. 2, Delay ist ganz schlecht, da dein Programm komplett angehalten wird (auch die abarbeitung der Message-Queue Warum übergibst Du nicht einfach eine Callback-Message-Funktionspointer von der Exe in die DLL? Damit wird die Funktion sofort aufgerufen. P.S. Wieso gibt es bei solch einem Wetter keinen schwitzenden Smiley? :gruebel: |
Re: Modulkommunikation
um halb zehn schwitzt du noch? wie heiss muss es bei euch sein...
@Funktionspointer: ja, der gedanke kam mir auch schon mal. das heisst, ich werfe der dll eine funktion zu, mit der sie bestimmte daten aus dem hauptprog holen kann? das ist ja direkt raffiniert... :-D das muss doch andersrum auch gehen, oder? ach ja, und wie rufe ich eine funktion auf, von der ich nur die adresse kenne? geht das über eine funktionsvariable?
Delphi-Quellcode:
wie geht sowas?
var funktion:function;
function:=4566; function(someparam); PS: pushen bringt ja doch was :shock: |
Re: Modulkommunikation
Zitat:
Zitat:
P.S: Das ist meine Interpretation. Ungetestet und ohne davon Ahnung zu haben ;) |
Re: Modulkommunikation
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Kein Kompilierungstest durchgeführt.
type
TMeinFunktionsprototyp=function(Param1, Param2: Integer): WordBool; stdcall; var FktPtrFromExe: TMeinFunktionsprototyp; procedure SetFuncPointer(FktPtr: TMeinFunktionsprototyp) begin FktPtrFromExe := FktPtr end; function CallFktPtr((Param1, Param2: Integer): Boolean; begin if Assigned(FktPtrFromExe) then result := FktPtrFromExe(Param1, Param2); end; Zitat:
Ab und zu wird ja mal was übersehen. |
Re: Modulkommunikation
auuuus....gezeichnet! [mit montgomery burns-stimme]
sobald ich meinen pc wieder funktionsfähig hab, wird das ausführlich getestet. |
Re: Modulkommunikation
Zitat:
|
Re: Modulkommunikation
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz