Autor Beitrag
Pierre
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 138

Win 98se und XP prof
D5Pers und D7Prof
BeitragVerfasst: Do 02.01.03 21:40 
Hallo,
wie kann ich es einrichten, dass mein Programm erst alles abarbeitet und erst, wenn es sich beendet hat, sich ein anderes (fremdes) Programm starten läßt?
Gruß Pierre
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: So 05.01.03 15:23 
schauen welche exe dateien laufen geht so: www.swissdelphicente.../showcode.php?id=616

die fremden exe Dateien schließen kannste dann so
ausblenden Quelltext
1:
PostMessage(FindWindow(nil,pchar('Delphi 5'),WM_CLOSE, 0, 0);					


du musst halt überprüfen was am anfang offen war und dann während dein programm läuft alles was neu läuft sofort wieder schließen :wink:

Fiji-Fighter
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 05.01.03 21:02 
Und wenn er nicht das Hauptfenster der Anwendung erwischt, läuft der Prozess munter weiter.
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mo 06.01.03 17:19 
wenn es ein hauptfenster gibt, dann erwischt er es mit dieser methode auch...
andernfalls sollte sich wer was besseres ausdenken... :wink:

Fiji-Fighter
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 06.01.03 18:19 
Ja aber nicht mit 100%-ger Sicherheit.
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mo 06.01.03 18:35 
warum nicht???
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 06.01.03 18:48 
Ja wenn er eben nicht das Hauptfenster erwischt. Wenn er bei ICQ nur ein Messagenfenster schließt., dann läuft der eigentliche Prozess noch weiter. Killt er aber den Hauptprozess (icq.exe) dann ist alles dicht.
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mo 06.01.03 18:53 
meine methode killt aber jedes Fenster, dass nach dem programmstart neu dazukommt...
wenn es also ein hauptfenster gibt, dann wird es auch gekillt!!!!! :twisted:

Fiji-Fighter
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mi 08.01.03 14:56 
Habe im Internet noch folgende Anleitung gefunden um auch Prozesse zu beenden:
Zitat:

Prozesse auflisten und beenden
Mit der nachfolgend aufgeführten Routinen können Sie die in einer Windowssitzung laufenden Prozesse aufzeigen und bei Bedarf auch entfernen. Hierfür benötigen Sie ein Formobject, ein ListViewobject und zu- mindest ein ButtonObject. Verknüpfen Sie das Buttonobject mit dem BtnRefreshClick damit gleich beim Start des Programms alle Prozesse angezeigt werden. Zum löschen eines Prozesses müssen Sie eine Verknüpfung zwischen DblClick des Listviewobject mit der Procedure ListviewDblClick. Wie aus den beigefügten Routinen ersichtlich, kann auch ein einzelner Prozess gesucht und terminiert werden. Die hierzu erforderlichen Schritte können aus der Refreshroutine entnommen werden. Wichtig ist die Einbindung der Unit TlHelp32 !
(Nur für Win95/Win98/ME)
Beispiel:

ausblenden volle Höhe 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:
interface 
uses 
{ . . . , } TLHelp32 { important ! } 

// Global Variables , Globale Variablen 

VAR aSnapshotHandle:THandle;
  aProcessEntry32:TProcessEntry32;
  
procedure TFormMain.BtnRefreshClick( Sender:TObject);
var i:integer;
  bLoop:BOOL;
  NewItem:TListItem;
begin 
  ListView.Items.Clear;
  aSnapshotHandle:=CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS,0);
  aProcessEntry32.dwSize:=Sizeof( aProcessEntry32);
  bLoop:=Process32First( aSnapshotHandle,aProcessEntry32);
  while integer( bLoop)<>0 do 
  begin 
    NewItem:=ListView.Items.add;
    NewItem.Caption:=ExtractFileName( aProcessEntry32.szExeFile);
    NewItem.subItems.Add( IntToHex( aProcessEntry32.th32ProcessID,4));
    NewItem.subItems.Add( aProcessEntry32.szExeFile);
    ContinueLoop:=Process32Next( aSnapshotHandle,aProcessEntry32);
  end;
  CloseHandle( aSnapshotHandle);
end;

procedure TFormMain.ListViewDblClick( Sender:TObject);
var Ret:BOOL;
  PrID:integer;// processidentifier 
  Ph:THandle;// processhandle 
  begin 
  try 
    with ListView do 
    begin 
      if MessageDlg( 'Do you want to Terminate "'+ItemFocused.Caption+'"?'+^J+
      'posible the system is instabile or out of'+^J+
      'control......',
      mtConfirmation,[mbYes,mbNo],0)=mrYes then 
      begin 
        PrID:=StrToInt( '$'+ItemFocused.SubItems[0]);
        Ph:=OpenProcess( 1,BOOL( 0),PrID);
        Ret:=TerminateProcess( Ph,0);
        if Integer( Ret)=0 Then 
        MessageDlg( 'Can Not Terminate "'+ItemFocused.Caption+'"',mtInformation,[mbOk],0) 
        else 
        ItemFocused.Delete;
      end;
    end;
  except 
  end;
end;

procedure TFormMain.FormCreate( Sender:TObject);
begin 
  // Application . OnHint := DisplayHint ; // If you want / need it . . . 
  BtnRefreshClick( Sender);
end;



Vielleicht klappts, vielleicht aber auch nicht :wink: :wink:

Fiji-Fighter
Pierre Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 138

Win 98se und XP prof
D5Pers und D7Prof
BeitragVerfasst: Mi 08.01.03 20:51 
Hallo,
ich werde beide Wege ausprobieren.
Vielen Dank Pierre