![]() |
[Problem] DLL + Threads
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:
DLL 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.
Code:
Hat jemand eine Idee wie ich es hinbekomme, dass beide Endlosschleifen weiter laufen?
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. Danke im Vorraus! |
AW: [Problem] DLL + Threads
Was soll denn das WaitForSingleObject auf den Rückgabewert von BeginThread bewirken?
Ich weiß nicht genau was WaitForSingleObject mit einem Threadhandle macht, aber ich vermute es wartet auf die Beendigung des Threads. Und genau das willst du doch gar nicht. Starte doch einfach den Thread und fertig... |
AW: [Problem] DLL + Threads
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 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-2025 by Thomas Breitkreuz