Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#7

AW: DLL Messagequeue

  Alt 18. Mär 2011, 11:36
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.
Delphi 2010, Update 4 & 5

Geändert von schwa226 (18. Mär 2011 um 12:10 Uhr)
  Mit Zitat antworten Zitat