AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[Problem] DLL + Threads

Ein Thema von 1Molotow1 · begonnen am 16. Mai 2012 · letzter Beitrag vom 16. Mai 2012
Antwort Antwort
1Molotow1

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

[Problem] DLL + Threads

  Alt 16. Mai 2012, 12: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
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: [Problem] DLL + Threads

  Alt 16. Mai 2012, 12:45
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...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
1Molotow1

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

AW: [Problem] DLL + Threads

  Alt 16. Mai 2012, 12:48
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.
Genau, er wartet bis der Thread fertig ist.

Starte doch einfach den Thread und fertig...
Dann habe ich das Problem, dass mir die EXE abstürzt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz