Forum: döda en annan process

Forum huvudsida -> Programmering -> döda en annan process

Sidor: 1

Till botten

achnorr 00:08 - 24:e Februari 2008 | Post #1
Medlem
Inlägg: 82


Skicka PM
finns det något bra sätt att döda en annan process i c++?
har googlat lite men hittar inget bra Smiley

-------------------------
Ohhoo*



Nissebosselasse 09:33 - 24:e Februari 2008 | Post #2
Medlem
Inlägg: 490


Skicka PM
Inte inbyggt i C++ nej, men ditt operativsystem tillhandahåller säkert sådana funktioner. Vilket OS sitter du på?


-------------------------
http://pushingcows.se
Gula Nallen

Senast redigerad 09:34 - 24:e Februari 2008


achnorr 14:27 - 24:e Februari 2008 | Post #3
Medlem
Inlägg: 82


Skicka PM
    Citat av Nissebosselasse:
Vilket OS sitter du på?

windows xp

-------------------------
Ohhoo*



Nissebosselasse 15:16 - 24:e Februari 2008 | Post #4
Medlem
Inlägg: 490


Skicka PM
ExitProcess är väl det "snälla" sättet att säga till en process att avsluta sig själv. Trilskas den så finns även TerminateProcess som avslutar den rätt upp och ner, utan att låta processen få stänga filer etc.

MSDN är din vän här!

-------------------------
http://pushingcows.se
Gula Nallen



achnorr 16:25 - 24:e Februari 2008 | Post #5
Medlem
Inlägg: 82


Skicka PM
  1. HANDLE hHandle;
  2. DWORD dwExitCode = 0;
  3. DWORD dwProcessId = "minprocess.exe";
  4.  
  5. hHandle = OpenProcess(PROCESS_QUERY_INFORMATION, 0, dwProcessId);
  6.  
  7. GetExitCodeProcess(hHandle,&dwExitCode);
  8.  
  9. TerminateProcess(hHandle,dwExitCode);


men DwProcessID tar inte const char ... hur ska jag skriva istället ?

-------------------------
Ohhoo*



Nissebosselasse 18:09 - 24:e Februari 2008 | Post #6
Medlem
Inlägg: 490


Skicka PM
Process-id är inte samma sak som namnet på den körbara filen, utan är något som tilldelas när processen "skapas".

Ett lättare alternativ är att använda meddelanden för att avsluta programmet, WM_CLOSE.
Meddelandet skickas till fönstrets meddelandeloop, som förhoppningsvis svarar korrekt på det (d.v.s., avslutar programmet).
Så här ser det ut:
  1. #include <windows.h>
  2.  
  3. int main ()
  4. {
  5. /*
  6. * FindWindow ger oss ett fönsterhand (HWND) som matchar
  7. * argumenten vi ger det.
  8. * Det första är klassnamnet för fönstret, vilket vi kan
  9. * strunta i (oftast vet vi inte det) genom att ange NULL.
  10. * Det andra är fönstertiteln.
  11. */
  12. HWND hwnd = FindWindow (NULL, "Screamer Radio v0.3.8");
  13.  
  14. /*
  15. * Matchas inget öppet fönster returneras NULL.
  16. */
  17. if (hwnd != NULL)
  18. {
  19. /*
  20. * Skicka WM_CLOSE-meddelandet till fönstrets
  21. * meddelandeloop, så att det stängs och programmet
  22. * avslutas.
  23. */
  24. PostMessage (hwnd, WM_CLOSE, 0, 0);
  25. }
  26.  
  27. return 0;
  28. }

Problemet med det här är om programmet (som i fallet med Screamer Radio eller t.ex. MSN) istället lägger sig nere i aktivitetsfältet när man klickar på stäng (i högra hörnet)

Sök på MSDN efter EnumProcesses, som ger en lista på alla processer som körs.

-------------------------
http://pushingcows.se
Gula Nallen



achnorr 19:13 - 24:e Februari 2008 | Post #7
Medlem
Inlägg: 82


Skicka PM
hm lite omständigt men funkar Smiley

-------------------------
Ohhoo*



Sidor: 1

Forum huvudsida -> Programmering -> döda en annan process
Atom feed

Du får inte posta i den här tråden | Till toppen