Thema: Delphi [Problem] DLL + Threads

Einzelnen Beitrag anzeigen

1Molotow1

Registriert seit: 16. Mai 2012
6 Beiträge
 
#1

[Problem] DLL + Threads

  Alt 16. Mai 2012, 11:34
Hallo, erst mal sorry falls das hier nicht die richtige Sektion ist. Ich habe keine passende gefunden...

Also:
Ich möchte in einer DLL einen Thread(oder mehrere) starten, mit einer Endlosschleife. (while)
Die EXE die die DLL ladet, hat ebenfalls eine Endlosschleife, die nach dem Start der Threads einfach "stehen bleibt". Das soll sie aber nicht!

EXE Code:
Code:
program bin;

uses
  SysUtils, Windows;

type
  TRealFunction = function(sParam: PChar): PChar; stdcall;

function LoadDLL(DllName: PChar; Einstieg: PChar; sParam: PChar): string;
var
  RealFunction: TRealFunction;
  Handle: THandle;
begin
  Handle := LoadLibrary(DllName);
  if Handle <> 0 then begin
    @RealFunction := GetProcAddress(Handle, Einstieg);
    if @RealFunction <> nil then begin
      result := PChar(RealFunction(sParam));
    end;
    FreeLibrary(Handle);
  end;
end;

Var
  sString: String;
begin

// sString wird eig. ausgelesen
sString := 'lal';

  while True do
  begin
    sleep(5000);

    if sString = 'lal' then
      LoadDLL(PAnsiChar(GetCurrentDir + '\test.dll'),'StartPlugin',PAnsiChar('übergabe-string'));

    // hier immer wieder ein command wiederholen
    // allerdings passiert nichts mehr, nachdem die dll geladen wird
  end;

end.
DLL Code:
Code:
library test;

uses
  SysUtils,
  Windows,
  Dialogs;

{$R *.res}

function tThread(p: Pointer): Integer;
begin

while True do
begin
  MessageBox(0, 'Endlosschleife soll bleiben...', '', 0);
end;

end;

function StartPlugin(sParam: PChar): PChar; stdcall;
Var
  Id:DWORD;
begin
  waitforsingleobject(BeginThread(nil,0,@tThread,nil,0,id),infinite);
end;

exports
  StartPlugin;

Begin
  IsMultiThread := True;

end.
Hat jemand eine Idee wie ich es hinbekomme, dass beide Endlosschleifen weiter laufen?


Danke im Vorraus!
  Mit Zitat antworten Zitat