Avatar billede hugopedersen Nybegynder
09. december 2009 - 14:20 Der er 1 kommentar og
1 løsning

Vente på udfald af andet programs arbejde

Jeg sidder og skal lave noget der kalder et eksternt program som kører og danner en fil.
Mit program skal så bruge denne fil efterfølgende.

Jeg havde tænkt mig at gøre det at jeg smider en timer på min form og så når jeg kalder det eksterne program så starter jeg timeren og ved udløb checker jeg for om filen findes og i så fald gør jeg dit - ellers gør jeg dat.

Er det en helt forkert måde at gribe det an på?

Jeg kunne selvfølgelig også gøre det at jeg startede programmet og så laver en loop der checker om den process kører (jeg kender jo .exe navnet) og når den så ikke gør det mere så checke filen og gøre dit eller dat.

Det er vigtigt at mit 'hovedprogram' venter på hvad det eksterne program laver før det går videre.
Avatar billede hugopedersen Nybegynder
09. december 2009 - 15:15 #2
Ja den var så nærliggende at jeg slet ikke havde tænkt på den :-)

Jeg har i forvejen en funktion som nedenstående. Den må kunne gøre det.

Function ExecuteAndWait(Const aFile, aParam : String): Integer;
  Var
    SEInfo                  : TShellExecuteInfo;
    ExitCode                : DWORD;
Begin
  FillChar(SEInfo, SizeOf(SEInfo), 0) ;
  SEInfo.cbSize := SizeOf(TShellExecuteInfo) ;
  With SEInfo Do
    Begin
      fMask := SEE_MASK_NOCLOSEPROCESS;
      Wnd := Application.Handle;
      lpFile := PChar(aFile) ;
      lpParameters := PChar(aParam) ;
      nShow := SW_SHOWNORMAL;
    End;
  If ShellExecuteEx(@SEInfo) Then
    Begin
      Repeat
        Application.ProcessMessages;
        GetExitCodeProcess(SEInfo.hProcess, ExitCode) ;
      Until (ExitCode <> STILL_ACTIVE) Or Application.Terminated;
      Result := ExitCode;
    End
  Else
    Result := -1;
End;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester