Autor Beitrag
FRWBonn
Hält's aus hier
Beiträge: 3

Win98, Win2K, WinXP

BeitragVerfasst: Mo 26.06.06 12:18 
Guten Tag an alle hier.

Ich programmiere in Delphi_4 und habe folgende Frage:

-> Wie starte ich ein externes Programm,
wenn es darum geht,
dieses externe Programm später wieder
aus dem Delphi-Programm heraus beenden zu können ?

Ich habe mir im Internet einige Vorschläge angesehen und folgendes versucht (siehe unten, Anhang) - aber wenn der Befehl kommt, über das Handle den externen Prozess zu stoppen, killt es auch mein Test-Programm.

WIE kann ich externe Programme STARTEN *UND* STOPPEN ?

Danke!

Frank = FRWBonn


/////////////////////////////////////////////////////////////////////////////

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
procedure TTest.ExecNewProcess(ProgramName : String; Wait: Boolean);
var
  StartInfo : TStartupInfo;
  ProcInfo : TProcessInformation;
  CreateOK : Boolean;
begin


  { fill with known state }
  FillChar(StartInfo,SizeOf(TStartupInfo),#0);
  FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
  StartInfo.cb := SizeOf(TStartupInfo);
  CreateOK := CreateProcess(nil, PChar(ProgramName), nil, nil,False,
              CREATE_NEW_PROCESS_GROUP+NORMAL_PRIORITY_CLASS,
              nil, nil, StartInfo, ProcInfo);
  { check to see if successful }

  If CreateOK
     then begin
          // may or may not be needed. Usually wait for child processes
          If Wait then
             begin
          // WaitForSingleObject(ProcInfo.hProcess, INFINITE);
             end;
          end
     else begin
          ShowMessage('Unable to run '+ProgramName);
          end;

  CloseHandle(ProcInfo.hProcess);
  CloseHandle(ProcInfo.hThread);

end; // procedure TTest.ExecNewProcess();


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Moderiert von user profile iconjasocul: Delphi-Tags hinzugefügt
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Mo 26.06.06 18:25 
Versuch mal das andere Programm mit ShellExecuteEx zu starten, dabei kannst du dir auch das Handle des neuen Prozesses zurückgeben lassen, darüber müsste man den Prozess wieder schließen können...