Avatar billede ALS Praktikant
29. marts 2007 - 16:36 Der er 1 kommentar og
1 løsning

Luk et andet program fra Delphi

Jeg har lavet et lille program, der under opstart starter et externt program, som skal kører i baggrunden, med denne kode-linie:

ShellExecute(Handle, 'open', pchar('MitProgram'), '', nil, SW_MINIMIZE);

Jeg vil gerne have mit program til at ryde op efter sig når det afsluttes, så det også lukker det externe program.
Hvordan gør jeg lige det?
Avatar billede dkn Nybegynder
29. marts 2007 - 17:10 #1
Hvis du kender vinduets navn eller class kan du bruge:

procedure TForm1.Button1Click(Sender: TObject);
var
  fhwnd : hwnd;
begin
  ShellExecute(Handle, 'open', pchar('notepad.exe'), '', nil, SW_MINIMIZE);

  sleep(5000);

  fhwnd := FindWindow(nil, 'Unavngivet - Notesblok');
  if fhwnd <> 0 then
    PostMessage(fhwnd, WM_CLOSE, 0, 0);
end;

Ellers kan du nok med fordel bruge CREATEPROCESS hvor du får handle direkte.
Avatar billede ALS Praktikant
29. marts 2007 - 18:12 #2
Sjovt, jeg syntes bestemt at det var den måde jeg selv forgæves har forsøgt at "kvæle" programmet, men det virker nu virker det sgu, så et eller andet må jeg have gjort forkert.

Tak for hjælpen :o)
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