Oppure

Loading
26/03/09 14:44
jaco94++
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
aaa
26/03/09 16:25
andrea.b89
si certo è possibile.
Per farlo si deve usare la classe Process del namespace System.Diagnostics.

Per chiudere un processo devi fare ne seguente modo

Process p = new Process();
//inizializzaione del processo
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.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace CloseAProcess
{
    class Program
    {
        static void Main(string[] args)
        {
            Process[] processiAttivi = Process.GetProcesses(Environment.MachineName);
            Process[] selectedProcess;
            string tmp;
            
            //stampa tutti i processi attivi
            
            foreach (Process p in processiAttivi)
                Console.WriteLine(p.ProcessName);

            Console.WriteLine("Inserisci ora il nome del processo da chiudere : ");
            tmp = Console.ReadLine();

            //seleziona tutti i processi con il nome inserito
            
            selectedProcess = Process.GetProcessesByName(tmp, Environment.MachineName);
            
            //se c'è almeno un processo con quel nome lo chiude
            
            if (selectedProcess.Length > 0)
            {
                Console.WriteLine("Processo in chiusura");
                selectedProcess[0].CloseMainWindow();
                Console.WriteLine("Processo chiuso");
            }

            Console.ReadLine();
        }

    }
}
aaa
28/03/09 17:55
jaco94++
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
aaa
28/03/09 21:17
andrea.b89
mmm....
che funzione utilizzi per ottenere i processi.
Se scrivi il codice magari posso aiutarti.
aaa
29/03/09 11:35
Il Totem
Perchè non provi ad utilizzare GetProcesses() senza parametri?
aaa
29/03/09 17:16
jaco94++
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++ 29/03/09 17:16
aaa
29/03/09 17:57
jaco94++
no niente mi da sempre e solo idle
aaa
29/03/09 18:24
lorenzo
ma perché non posti il codice come ti hanno già detto? Almeno possiamo capire cosa non va....
aaa