So,
wie ich mir gedacht habe läuft es mit einer
VCL Application ohne Probleme.
Ich kann das Device öffnen und wieder schließen.
In der
DLL bleibt es beim Öffnen stehen.
Auch ein Einbinden der D6DLLSynchronizer.pas hat nichts gebracht. Diese würde ja ein AllocateHWnd durchführen.
Jetzt stellt sich mir die Frage wie ich das machen kann damit es in der
DLL auch funktioniert!?
Das ganze in einen eignenen Thread auszulagern möchte ich eigentlich umgehen.
Edit:
Jetzt habe ich einfach das einmal Probiert:
Delphi-Quellcode:
Type
TTest = class(TThread)
private
public
constructor Create();
protected
procedure Execute; override;
end;
constructor TTest.Create();
begin
inherited create(True); // CreateSuspended = true
FreeOnTerminate := True;
end;
procedure TTest.Execute;
var
msg : Tmsg;
begin
while not Terminated do
begin
Sleep(1);
end;
end;
In meiner
DLL rufe ich dann auf:
Delphi-Quellcode:
test := TTest.Create;
test.Start;
Nun wird der Thread erzeugt, aber trotz Start kommt er nicht in die Execute?
Ein Breakpoint in der Execute bleibt unangetastet. Die
DLL arbeitet aber step für step weiter.
Wenn schon dieser Thread nicht ausgeführt wird kann das auch der Grund sein warum es mit der Funktion auch nicht geht.