AGB  ·  Datenschutz  ·  Impressum  







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

Programm starten und auf Programmende warten

Ein Thema von Aike · begonnen am 4. Nov 2005 · letzter Beitrag vom 15. Nov 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#11

Re: Programm starten und auf Programmende warten

  Alt 4. Nov 2005, 20:07
Zitat von Aike:
Bewirkt das nicht, dass genau der Sinn des Wartens umgangen wird?
Im Grunde genommen JA
Aber du kannst dann ja durch die Schleige im Hauptthread dennoch warten

Zitat von Aike:
Da wüsste ich nicht, wie das gehen sollte, bin aber offen für sowas. Einen Thread zu erstellen ist für mich zwar nicht einfach, aber das würde ich in erin oder zwei Stunden auch hinbekommen Von ProcessMessages habe ich aber gar keine Ahnung.
so als kleines Beispiel:
Delphi-Quellcode:
ThreadStartenUndDateiÜbergeben...
// prüfen ob Thread noch Läuft
While isThreadNochAktiv
  // prüfen of der Benutzter einen Abbruch wünscht
  and not Application.Terminated do Begin
  // Botschaftswarteschlange abarbeiten
  Application.ProcessMessages;
  // kleine Pause ... für die CPU-Auslastung
  Sleep(100);
End;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#12

Re: Programm starten und auf Programmende warten

  Alt 5. Nov 2005, 10:07
Gut, ich hab mir jetzt also einen Thread dazu erstellt, in dem die Programme gestartet werden können. Hier die neuen Probleme

- Im Thread kann ich mit ShellExecuteAndWait() keine übergebene Datei (vom Typ string) aufrufen, da ShellExecuteAndWait() eine Var vom Typ PWideChar verlangt. Eine Typenumwandlung mit PWideChar() bringt nichts.
- Mit Sleep() hängt mein Programm genauso wie bei ShellExecuteAndWait() :-/
- Mir fällt keine Lösung ein, wie ich überprüfen könnte, dass der Thread noch existiert, wenn ShellExecuteAndWait() nicht geht. Ansonsten könnte man sowas machen ...
Delphi-Quellcode:
//Thread
ThreadGestartet:=True;
ShellExecuteAndWait();
ThreadGestartet:=False;

//Hauptprogramm
Thread.Create()
//Irgendwie warten (while-Schleife?)
if not uThread.ThreadGestartet then
  MachWeiterMitDemLustigenProgramm;
Achim
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#13

Re: Programm starten und auf Programmende warten

  Alt 14. Nov 2005, 13:56
Ich kenne mich nicht besonders aus mit Threads, aber was ich mir grade gedacht hab, war, dass man den Thread doch irgendwie releasen oder terminieren muss, wenn man ihn beenden will. Kann man auf diese Art vielleicht rausfinden, ob der Thread noch am laufen ist? Nein? Aaaaah! Hilfe
Achim
  Mit Zitat antworten Zitat
Ianisp

Registriert seit: 15. Nov 2005
Ort: Dresden
2 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Programm starten und auf Programmende warten

  Alt 15. Nov 2005, 13:52
Hi Aike,

Probiere mal das:

Delphi-Quellcode:
procedure TMainForm.runProcess(ExeName, Parameter: String; wait: boolean);
var SUInfo: TStartupInfo;
    ProcInfo: TProcessInformation;
    bool:boolean;
begin
   FillChar(SUInfo, SizeOf(SUInfo), #0);
   with SUInfo do begin
     cb := SizeOf(SUInfo);
     dwFlags := STARTF_USESHOWWINDOW;
   end;
   bool := CreateProcess(NIL, PChar(EXEName+' '+Parameter), NIL, NIL, FALSE,
                           CREATE_NEW_CONSOLE or
                           NORMAL_PRIORITY_CLASS, NIL,
                           PChar(ApplicationDir),
                           SUInfo, ProcInfo);
   if (bool)and(wait) then
     while WaitForSingleObject(ProcInfo.hProcess, 100 {INFINITE})=WAIT_TIMEOUT do begin
        //refresh;
        Application.ProcessMessages;
        if Application.Terminated then
           Break;
     end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:07 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