Einzelnen Beitrag anzeigen

Stacker

Registriert seit: 12. Okt 2006
5 Beiträge
 
#5

Re: Nach CreateProcess keine Befehle mehr annehmen

  Alt 21. Nov 2006, 09:12
Hallo ich habe das Problem über Threads gelöst. Die Console hat keine Ende , sie läuft zu lange bis sie beendet wird.

Hier mal der Code

Delphi-Quellcode:
type
  TMyThread = class(TThread)
    exe:Tedit;
    command:Tedit;
    procedure Execute; override;
    procedure VCLSync;
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RC_LineOut:=mylineout;
end;

procedure TMyThread.Execute;
begin
  if not Terminated then
  begin
    // Zugriff auf VCL-Elemente synchronisieren
    Synchronize(VCLSync);

    // etwas warten
    Sleep(10);
  end;
end;

procedure TMyThread.VCLSync;
begin
  RC_Run(exe.Text+' --config '+command.Text);
end;

procedure MyLineOut(s: string); // Output procedure
begin
  form1.memo2.lines.add(s);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  memo2.Clear;
  // Thread erzeugen (suspended)
  Th := TMyThread.Create(True);
  // Thread gibt sich selbst frei
  Th.FreeOnTerminate := True;
  // Progressbar zuweisen
  Th.exe := Edit4;
  Th.command := Edit5;
  // Thread starten
  Th.Resume;
  // Message anzeigen, Thread läuft weiter
  //ShowMessage('Thread Gestartet');
end;

if (content='!run') and (auser.nick = okuser) then
begin
  button3.Click;
  idirc1.say(auser.nick,'Prog gestartet ...');
end;
if (content='!stop') and (auser.nick = okuser) then
begin
  if not th.Terminated then th.Terminate;
  if not KillTask('...exe') then idirc1.say(auser.nick,'Prog nicht beendet ...');
end;
Danke für die Hilfe
  Mit Zitat antworten Zitat