Autor Beitrag
dieter1a
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20

XP Pro

BeitragVerfasst: Mi 06.02.08 15:27 
Hallo,

mein Delphi-Programm startet eine .exe und verknüpft das externe Programm via .txt mit einer Datenbank.
Der Start des externen Programms:
ausblenden Delphi-Quelltext
1:
HandelReturn:=ShellExecute(Application.Handle, 'open''c:\Tower\Prefs\3D_PowerTower.exe'nilnil, SW_SHOW);					


Wobei HandelReturn vom Typ Cardinal ist.
Anschließend werden die Textdateien mittels Timer im Sekundentakt ausgelesen oder gegebenenfalls neu beschrieben.

Die Timerroutine:
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:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
procedure TForm1.timerTimer(Sender: TObject);
Var
beenden : Integer;
begin
timer.Enabled := False;
Application.Minimize;

beenden := 0;

  //Endlosschleife der Tower-überwachung
  //wird erst beendet wenn in order.txt 'login-aus' steht

      gAllow:=Lesensync( );
      if gAllow = 'd' then
        begin
        //order.txt auslesen und ausführen
        gLesenorder := Lesenorder();
        if Pos('http',gLesenorder) > 0 then
          begin
          //Browser aufrufen
          ShellExecute(0'open', PChar(gLesenorder), nilnil, SW_SHOW);
          end;
          //beenden einleiten
        if Pos('login',gLesenorder) > 0 then
          begin
          if gNick = 'Gast' then
            begin
            gVariable := 'exit-Gast';
            end
          else
            begin
            gVariable := 'exit-nick';
            end;
          beenden := 1;
          end;
        gSchreibenorder := Schreibenorder();

        //gamedata.txt auslesen und an Server schicken
        gLesendata := Lesendata();
        nick := Parse('*', gLesendata, 1);
        gposition := Parse('*', gLesendata, 2);
        dialog := Parse('*', gLesendata, 3);
        zeit := Parse('*', gLesendata, 4);
        if ((gVariable = 'exit-nick'or (gVariable = 'exit-Gast')) then
          begin
          variable := 'variable='+gVariable;
          end
        else
          begin
          variable := Parse('*', gLesendata, 5);
          end;
        nummer := Parse('*', gLesendata, 6);

        sList:=TStringList.Create;
        try

          sList.Add(nick);
          sList.Add(gposition);
          sList.Add(dialog);
          sList.Add(zeit);
          sList.Add(variable);
          sList.Add(nummer);
          Memo1:=SendPostData(idHttp1,'http://www.xxxxxxx/xxxx/xxx.php',sList);
        finally
          sList.Free;
        end;
        if Parse('*', Memo1, 2) = '10' then
          begin

          if gNick <> 'Gast' then
            begin
            gBuffer := Parse('*', Memo1, 3);
            end;

          sList:=TStringList.Create;
          try
            sList.Add(gNick);
            Memo1:=SendPostData(idHttp1,'http://www.xxxxxxx/xxxx/xxx.php',sList);
            Memo1:=Parse('*', Memo1, 2);
            //ShowMessage(Memo1);
          finally
            sList.Free;
            end;
          gSchreibendata := Schreibendata(Memo1+gBuffer);
          gSchreibensync := Schreibensync();
          end;
       end;

    if beenden = 1 then
    begin
      assignFile(order,'C:\Tower\Prefs\order.txt'); //pfadangabe an datei übergeben
      rewrite(order);      //zum schreiben öffnen
      Write(order,'end'); //schreiben
      closeFile(order);    //schließen
      gSchreibensync := Schreibensync();
      Form1.Close;
    end;
timer.Enabled := true;
end;


Meine Frage:

Was kann ich einfügen, um das externe Programm ebenfalls im Sekundentakt dahingehend abzufragen, ob es noch läuft, oder ob es schon beendet ist.

Muss ich eventuell etwas aus der Tool-Palette ins Form einfügen?

Für ein Code-Schnipsel wäre ich sehr dankbar.

MfG Dieter Rüstmann
dieter1a Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20

XP Pro

BeitragVerfasst: Do 07.02.08 02:27