Terminar un proceso usando Kill

07/06/2004 - 17:04 por Alexandra | Informe spam
Hola, cómo están?
estoy utilizando la sentencia Kill para forzar que termine
una aplicación, pero cuando lo utilizo se inestabiliza el
sistema y se cierran casi todas las aplicaciones que estoy
corriendo!!!
Alguno podría ayudarme?

Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses
[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();

Saludos.

Preguntas similare

Leer las respuestas

#1 Javier Ros
08/06/2004 - 14:46 | Informe spam
hmn!, codigo raro donde los haya.

En principio asignas a otherProcess un nuevo Process,
acto seguido machacas lo que acabas de hacer con GetProcessById,
luego usas runningProcesses, que no especificas que es, y tambien usas
una variable "i" que supongo que es de un bucle. Deduzco que tu codigo real
es:

runningProcesses = AlgoQueNoSeLoQueEs();
for (int i = 0; i < runningProcesses.Count; i++)
{
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Con lo cual te estas cargando todos lo procesos cargados en
runningProcesses,
que si son todos los que estan rulando en el sistema pues ... normal que se
te vaya
todo, comprueba el nombre del proceso para ver si lo quieres matar o no.
Quedaria así:

runningProcesses = AlgoQueNoSeLoQueEs();
for (int i = 0; i < runningProcesses.Count; i++)
{
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses[i].Id);
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Suerte.

Javier Ros Moreno
Aguas de Murcia.


"Alexandra" escribió en el mensaje
news:18e2b01c44ca0$b6e18d90$
Hola, cómo están?
estoy utilizando la sentencia Kill para forzar que termine
una aplicación, pero cuando lo utilizo se inestabiliza el
sistema y se cierran casi todas las aplicaciones que estoy
corriendo!!!
Alguno podría ayudarme?

Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses
[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();

Saludos.
Respuesta Responder a este mensaje
#2 Javier Ros
08/06/2004 - 15:00 | Informe spam
Mejor todavia, y quitamos trabajo al recolector de basura:

runningProcesses = AlgoQueNoSeLoQueEs();
for (int i = 0; i < runningProcesses.Count; i++)
{
Process otherProcess = Process.GetProcessById(runningProcesses[i].Id);
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Y bueno ya puestos yo lo haria así:

runningProcesses = AlgoQueNoSeLoQueEs();
foreach (Process otherProcess in runningProcesses)
{
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
otherProcess.Kill();
}

Lo de otherPrecess.Close() ... No hace falta, no?

Bueno pues eso.

Javier Ros Moreno
Aguas de Murcia.


"Javier Ros" $PAMHEREemuasa.es> escribió en el mensaje
news:<#...
hmn!, codigo raro donde los haya.

En principio asignas a otherProcess un nuevo Process, acto seguido
machacas lo que acabas de hacer con GetProcessById, luego usas
runningProcesses, que no especificas que es, y tambien usas una
variable "i" que supongo que es de un bucle. Deduzco que tu codigo
real
es:

runningProcesses = AlgoQueNoSeLoQueEs(); for (int i = 0; i <
runningProcesses.Count; i++) {
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Con lo cual te estas cargando todos lo procesos cargados en
runningProcesses, que si son todos los que estan rulando en el sistema
pues ... normal que se te vaya todo, comprueba el nombre del proceso
para ver si lo quieres matar o no.
Quedaria así:

runningProcesses = AlgoQueNoSeLoQueEs(); for (int i = 0; i <
runningProcesses.Count; i++) {
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses[i].Id);
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Suerte.

Javier Ros Moreno
Aguas de Murcia.


"Alexandra" escribió en el
mensaje news:18e2b01c44ca0$b6e18d90$
Hola, cómo están?
estoy utilizando la sentencia Kill para forzar que termine una
aplicación, pero cuando lo utilizo se inestabiliza el sistema y se
cierran casi todas las aplicaciones que estoy corriendo!!!
Alguno podría ayudarme?

Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses
[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();

Saludos.


Respuesta Responder a este mensaje
#3 Anonimo
08/06/2004 - 17:10 | Informe spam
Javier, he probado lo que me pasaste,pero no ha dado
resultado,
Lo complicado del código se debe a que ya he PROBADO
todas las combinaciones posibles!!!! y se me sigue
colgando el sistema.. de las más prolijas a las más
desprolijas...
les paso el codigo completo, con tus modificaciones
correctamente propuestas:
Process[] runningProcesses = Process.GetProcessesByName
(configElement.ProcessName);

foreach (Process otherInstance in runningProcesses)
{
Process.GetProcessById(instance.Id);
if (otherInstance.ProcessName == configElement.ProcessName)
{
if (otherInstance.CloseMainWindow()==false)
{
otherInstance.EnableRaisingEvents=true;
otherInstance.Kill();
}
}
Saludos!
P.D: lo que sucede es que se cierran todas las
aplicaciones que están corriendo incluida la que llama las
sentencias anteriores.

Mejor todavia, y quitamos trabajo al recolector de basura:

runningProcesses = AlgoQueNoSeLoQueEs();
for (int i = 0; i < runningProcesses.Count; i++)
{
Process otherProcess = Process.GetProcessById


(runningProcesses[i].Id);
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Y bueno ya puestos yo lo haria así:

runningProcesses = AlgoQueNoSeLoQueEs();
foreach (Process otherProcess in runningProcesses)
{
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
otherProcess.Kill();
}

Lo de otherPrecess.Close() ... No hace falta, no?

Bueno pues eso.

Javier Ros Moreno
Aguas de Murcia.


"Javier Ros" $PAMHEREemuasa.es> escribió en el


mensaje
news:<#...
hmn!, codigo raro donde los haya.

En principio asignas a otherProcess un nuevo Process,




acto seguido
machacas lo que acabas de hacer con GetProcessById,




luego usas
runningProcesses, que no especificas que es, y tambien




usas una
variable "i" que supongo que es de un bucle. Deduzco




que tu codigo
real
es:

runningProcesses = AlgoQueNoSeLoQueEs(); for (int i =




0; i <
runningProcesses.Count; i++) {
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses




[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Con lo cual te estas cargando todos lo procesos




cargados en
runningProcesses, que si son todos los que estan




rulando en el sistema
pues ... normal que se te vaya todo, comprueba el




nombre del proceso
para ver si lo quieres matar o no.
Quedaria así:

runningProcesses = AlgoQueNoSeLoQueEs(); for (int i =




0; i <
runningProcesses.Count; i++) {
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses




[i].Id);
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Suerte.

Javier Ros Moreno
Aguas de Murcia.


"Alexandra"




escribió en el
mensaje news:18e2b01c44ca0$b6e18d90$
Hola, cómo están?
estoy utilizando la sentencia Kill para forzar que




termine una
aplicación, pero cuando lo utilizo se inestabiliza el




sistema y se
cierran casi todas las aplicaciones que estoy




corriendo!!!
Alguno podría ayudarme?

Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses
[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();

Saludos.






.

Respuesta Responder a este mensaje
#4 Javier Ros
08/06/2004 - 18:33 | Informe spam
Para probarlo dime que contiene "configElement.ProcessName"

Javier Ros Moreno.

escribió en el mensaje
news:19b6d01c44d6a$ac0aaf30$
Javier, he probado lo que me pasaste,pero no ha dado
resultado,
Lo complicado del código se debe a que ya he PROBADO
todas las combinaciones posibles!!!! y se me sigue
colgando el sistema.. de las más prolijas a las más
desprolijas...
les paso el codigo completo, con tus modificaciones
correctamente propuestas:
Process[] runningProcesses = Process.GetProcessesByName
(configElement.ProcessName);

foreach (Process otherInstance in runningProcesses)
{
Process.GetProcessById(instance.Id);
if (otherInstance.ProcessName == configElement.ProcessName)
{
if (otherInstance.CloseMainWindow()==false)
{
otherInstance.EnableRaisingEvents=true;
otherInstance.Kill();
}
}
Saludos!
P.D: lo que sucede es que se cierran todas las
aplicaciones que están corriendo incluida la que llama las
sentencias anteriores.

Mejor todavia, y quitamos trabajo al recolector de basura:

runningProcesses = AlgoQueNoSeLoQueEs();
for (int i = 0; i < runningProcesses.Count; i++)
{
Process otherProcess = Process.GetProcessById


(runningProcesses[i].Id);
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Y bueno ya puestos yo lo haria así:

runningProcesses = AlgoQueNoSeLoQueEs();
foreach (Process otherProcess in runningProcesses)
{
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
otherProcess.Kill();
}

Lo de otherPrecess.Close() ... No hace falta, no?

Bueno pues eso.

Javier Ros Moreno
Aguas de Murcia.


"Javier Ros" $PAMHEREemuasa.es> escribió en el


mensaje
news:<#...
hmn!, codigo raro donde los haya.

En principio asignas a otherProcess un nuevo Process,




acto seguido
machacas lo que acabas de hacer con GetProcessById,




luego usas
runningProcesses, que no especificas que es, y tambien




usas una
variable "i" que supongo que es de un bucle. Deduzco




que tu codigo
real
es:

runningProcesses = AlgoQueNoSeLoQueEs(); for (int i 0; i <
runningProcesses.Count; i++) {
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses




[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Con lo cual te estas cargando todos lo procesos




cargados en
runningProcesses, que si son todos los que estan




rulando en el sistema
pues ... normal que se te vaya todo, comprueba el




nombre del proceso
para ver si lo quieres matar o no.
Quedaria así:

runningProcesses = AlgoQueNoSeLoQueEs(); for (int i 0; i <
runningProcesses.Count; i++) {
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses




[i].Id);
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Suerte.

Javier Ros Moreno
Aguas de Murcia.


"Alexandra"




escribió en el
mensaje news:18e2b01c44ca0$b6e18d90$
Hola, cómo están?
estoy utilizando la sentencia Kill para forzar que




termine una
aplicación, pero cuando lo utilizo se inestabiliza el




sistema y se
cierran casi todas las aplicaciones que estoy




corriendo!!!
Alguno podría ayudarme?

Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses
[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();

Saludos.






.

Respuesta Responder a este mensaje
#5 Javier Ros
08/06/2004 - 18:50 | Informe spam
La programación no es como la primitiva y la bonoloto, no es dar con la
combinación ganadora, deberías usar una cosa que se llama debuger
es muy util a la hora de encontrar errores en el código, esto es lo que yo
he hecho y funciona perfectamente:

// Obtenemos todos los procesos del sistema.
Process[] runningProcesses = Process.GetProcesses();

// Recorre cada uno de ellos.
foreach (Process otherInstance in runningProcesses)

// Vemos si el nombre es el que queremos y usamos ToLower para
// evitar problemas con las grandusculas y minusculas
if (otherInstance.ProcessName.ToLower() == "deviceinfo")
// Intentamos cerrarlo por las buenas.
if (otherInstance.CloseMainWindow() == false)
// Si no es así lo matamos sin más.
otherInstance.Kill();

En concreto este codigo mata un proceso llamado "deviceinfo"

escribió en el mensaje
news:19b6d01c44d6a$ac0aaf30$
Javier, he probado lo que me pasaste,pero no ha dado
resultado,
Lo complicado del código se debe a que ya he PROBADO
todas las combinaciones posibles!!!! y se me sigue
colgando el sistema.. de las más prolijas a las más
desprolijas...
les paso el codigo completo, con tus modificaciones
correctamente propuestas:
Process[] runningProcesses = Process.GetProcessesByName
(configElement.ProcessName);

foreach (Process otherInstance in runningProcesses)
{
Process.GetProcessById(instance.Id);
if (otherInstance.ProcessName == configElement.ProcessName)
{
if (otherInstance.CloseMainWindow()==false)
{
otherInstance.EnableRaisingEvents=true;
otherInstance.Kill();
}
}
Saludos!
P.D: lo que sucede es que se cierran todas las
aplicaciones que están corriendo incluida la que llama las
sentencias anteriores.

Mejor todavia, y quitamos trabajo al recolector de basura:

runningProcesses = AlgoQueNoSeLoQueEs();
for (int i = 0; i < runningProcesses.Count; i++)
{
Process otherProcess = Process.GetProcessById


(runningProcesses[i].Id);
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Y bueno ya puestos yo lo haria así:

runningProcesses = AlgoQueNoSeLoQueEs();
foreach (Process otherProcess in runningProcesses)
{
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
otherProcess.Kill();
}

Lo de otherPrecess.Close() ... No hace falta, no?

Bueno pues eso.

Javier Ros Moreno
Aguas de Murcia.


"Javier Ros" $PAMHEREemuasa.es> escribió en el


mensaje
news:<#...
hmn!, codigo raro donde los haya.

En principio asignas a otherProcess un nuevo Process,




acto seguido
machacas lo que acabas de hacer con GetProcessById,




luego usas
runningProcesses, que no especificas que es, y tambien




usas una
variable "i" que supongo que es de un bucle. Deduzco




que tu codigo
real
es:

runningProcesses = AlgoQueNoSeLoQueEs(); for (int i 0; i <
runningProcesses.Count; i++) {
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses




[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Con lo cual te estas cargando todos lo procesos




cargados en
runningProcesses, que si son todos los que estan




rulando en el sistema
pues ... normal que se te vaya todo, comprueba el




nombre del proceso
para ver si lo quieres matar o no.
Quedaria así:

runningProcesses = AlgoQueNoSeLoQueEs(); for (int i 0; i <
runningProcesses.Count; i++) {
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses




[i].Id);
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Suerte.

Javier Ros Moreno
Aguas de Murcia.


"Alexandra"




escribió en el
mensaje news:18e2b01c44ca0$b6e18d90$
Hola, cómo están?
estoy utilizando la sentencia Kill para forzar que




termine una
aplicación, pero cuando lo utilizo se inestabiliza el




sistema y se
cierran casi todas las aplicaciones que estoy




corriendo!!!
Alguno podría ayudarme?

Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses
[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();

Saludos.






.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida