Avatar billede hensewg Nybegynder
23. april 2008 - 18:03 Der er 4 kommentarer

Hvordan stopper jeg program?

Hvordan stopper jeg et program som jeg har åbnet med shellexecute?

Shellexecute(Handle, 'open', 'cmd.exe', PChar('ipconfig/all), nil, SW_Normal);
Avatar billede pidgeot Nybegynder
23. april 2008 - 18:28 #1
Den korte: Det gør du ikke.

Den lange: I stedet for ShellExecute skal du bruge ShellExecuteEx (http://msdn2.microsoft.com/en-us/library/bb762154(VS.85).aspx) med SEE_MASK_NOCLOSEPROCESS til fMask - så får du et handle til processen i hProcess. Dette kan du så bruge med eks. TerminateProcess (http://msdn2.microsoft.com/en-us/library/ms686714.aspx).
Avatar billede hensewg Nybegynder
23. april 2008 - 21:27 #2
Tænkte mere på noget i den her stil:

procedure TForm1.Button1Click(Sender: TObject);
var
H: HWND;
begin
Shellexecute(Handle, 'open', 'cmd.exe', PChar('ipconfig/all), nil, SW_Normal);
H := FindWindow(nil, 'C:\WINDOWS\system32\cmd.exe');
if H <> 0 then
PostMessage(H, WM_CLOSE, 0, 0);
end;
Avatar billede pidgeot Nybegynder
23. april 2008 - 21:51 #3
Det vil da også virke fint nok så længe der kun er et vindue med den titel - det kan måske være fint nok hvis det kun er dig der skal bruge det, men det er ikke en særlig god og stabil løsning.

Hvis der er flere vinduer der matcher, ender du med at lukke et tilfældigt et - og det behøver ikke være det du åbnede.
Avatar billede hensewg Nybegynder
24. april 2008 - 14:27 #4
Nå...
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