Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Chiudere un processo c#
Forum - C# / VB.NET - Chiudere un processo c#

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 15:44
Giovedì, 26/03/2009
salve a tutti

volevo sapere se è possibile (ed eventualmente come fare) a chiudere un processo dal mio programma....

tipo se dal mio programma schiaccio un tasto il programma deve terminare la console di windows (cmd.exe) come posso fare??

grz in anticipo

PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 17:25
Giovedì, 26/03/2009
si certo è possibile.
Per farlo si deve usare la classe Process del namespace System.Diagnostics.

Per chiudere un processo devi fare ne seguente modo

Codice sorgente - presumibilmente C# / VB.NET

  1. Process p = new Process();
  2. //inizializzaione del processo
  3. p.CloseMainWindow(); //chiude il processo



ora però per ottenere un processo già attivo bisogna usare i metodi :
   -  GetProcesses()
   -  GetProcessesByName()
   -  GetProcessesById()

sono tre metodi statici della classe Process.

Di seguito un breve esempio in C#, versione Console, su come chiudere un processo.

Codice sorgente - presumibilmente C#

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Diagnostics;
  6.  
  7. namespace CloseAProcess
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Process[] processiAttivi = Process.GetProcesses(Environment.MachineName);
  14.             Process[] selectedProcess;
  15.             string tmp;
  16.            
  17.             //stampa tutti i processi attivi
  18.            
  19.             foreach (Process p in processiAttivi)
  20.                 Console.WriteLine(p.ProcessName);
  21.  
  22.             Console.WriteLine("Inserisci ora il nome del processo da chiudere : ");
  23.             tmp = Console.ReadLine();
  24.  
  25.             //seleziona tutti i processi con il nome inserito
  26.            
  27.             selectedProcess = Process.GetProcessesByName(tmp, Environment.MachineName);
  28.            
  29.             //se c'è almeno un processo con quel nome lo chiude
  30.            
  31.             if (selectedProcess.Length > 0)
  32.             {
  33.                 Console.WriteLine("Processo in chiusura");
  34.                 selectedProcess[0].CloseMainWindow();
  35.                 Console.WriteLine("Processo chiuso");
  36.             }
  37.  
  38.             Console.ReadLine();
  39.         }
  40.  
  41.     }
  42. }


PM Quote
Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 18:55
Sabato, 28/03/2009
grz mille della risposta però ho 1 problema, si i processi riesco a chiuderli però quando cerco di ottenere i processi l'unico processo che mi trova e un certo idle come mai ??

a si nel caso può essere utile non è un programma console...

grz

PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 22:17
Sabato, 28/03/2009
mmm....
che funzione utilizzi  per ottenere i processi.
Se scrivi il codice magari posso aiutarti.

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:35
Domenica, 29/03/2009
Perchè non provi ad utilizzare GetProcesses() senza parametri?

PM Quote
Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 19:16
Domenica, 29/03/2009
ho usato il tuo codice modificando il nome delle variabili tipo process[]processiaattivi in process []pr ma niente di che non so perche pero nn va ora provo a nn dargli parametri dentro a getprocesses()

Ultima modifica effettuata da jaco94++ il 29/03/2009 alle 19:16
PM Quote
Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 19:57
Domenica, 29/03/2009
no niente mi da sempre e solo idle

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 20:24
Domenica, 29/03/2009
ma perché non posti il codice come ti hanno già detto? Almeno possiamo capire cosa non va....

PM Quote
Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 21:45
Domenica, 29/03/2009
ecco il codice:

process [] openproc = process.getprocesses(environment.machinename);
foreach (process stamp in openproc)
{
  textbox2.text=(stamp.processname);
}

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo