Kill Process by it's name

Hi everybody, i'm working on Microsoft Windows XP, and i want to make a
program to kill windows process by the name of the process, not by the PID,
like EXCEL.EXE to kill microsoft excel or IEXPLORE.EXE to kill Internet
Explorer.
At this moment, i'm using this code:

mgmt = WIN32OLE.connect('winmgmts:\\\\.')
  mgmt.ExecQuery("Select * from Win32_Process Where Name =
'#{proc_name}'").each{ |item|
    item.Terminate()
}
It works, but sometimes it crashes, in an inesperated way.

Thanks and i'm waiting for your help.

Agustin Ramos

I am not sure if it works on XP, but it definitely works on Windows Server 2003:

`taskkill /im excel.exe /f`

I use it to kill off zombie processes.

Warning though, this will kill ANYTHING that matches the image name of
excel.exe... that is, all copies running.

Regards

Mikel

···

On Jan 18, 2008 12:54 AM, Agustin Ramos <aart85@gmail.com> wrote:

Hi everybody, i'm working on Microsoft Windows XP, and i want to make a
program to kill windows process by the name of the process, not by the PID,

Agustin Ramos wrote:

Hi everybody, i'm working on Microsoft Windows XP, and i want to make a
program to kill windows process by the name of the process, not by the PID,
like EXCEL.EXE to kill microsoft excel or IEXPLORE.EXE to kill Internet
Explorer.
At this moment, i'm using this code:

mgmt = WIN32OLE.connect('winmgmts:\\\\.')
  mgmt.ExecQuery("Select * from Win32_Process Where Name =
'#{proc_name}'").each{ |item|
    item.Terminate()
}
It works, but sometimes it crashes, in an inesperated way.

Here's a way that works well here, doesn't use OLE, and is even a sort
of portable

require 'sys/proctable'
require 'time'

Sys::ProcTable.ps.each { |ps|
  if ps.name.downcase == proc_name.downcase
    Process.kill('KILL', ps.pid)
  end
}

I'm not using win myself. But I've seen an example on killing processes in Win
in Managing Projects with GUN Make, from O'Reilly

···

On 17 jan 2008, at 14.54, Agustin Ramos wrote:

Hi everybody, i'm working on Microsoft Windows XP, and i want to make a
program to kill windows process by the name of the process, not by the PID,
like EXCEL.EXE to kill microsoft excel or IEXPLORE.EXE to kill Internet
Explorer.
At this moment, i'm using this code:

mgmt = WIN32OLE.connect('winmgmts:\\\\.')
mgmt.ExecQuery("Select * from Win32_Process Where Name =
'#{proc_name}'").each{ |item|
   item.Terminate()
}
It works, but sometimes it crashes, in an inesperated way.

Thanks and i'm waiting for your help.

Agustin Ramos

-----------------------------------
See the amazing new SF reel: Invasion of the man eating cucumbers from outer space.
On congratulations for a fantastic parody, the producer replies : "What parody?"

Tommy Nordgren
tommy.nordgren@comhem.se

agustin t amoooo!

···

2008/1/17, Agustin Ramos <aart85@gmail.com>:

Hi everybody, i'm working on Microsoft Windows XP, and i want to make a
program to kill windows process by the name of the process, not by the
PID,
like EXCEL.EXE to kill microsoft excel or IEXPLORE.EXE to kill Internet
Explorer.
At this moment, i'm using this code:

mgmt = WIN32OLE.connect('winmgmts:\\\\.')
mgmt.ExecQuery("Select * from Win32_Process Where Name =
'#{proc_name}'").each{ |item|
   item.Terminate()
}
It works, but sometimes it crashes, in an inesperated way.

Thanks and i'm waiting for your help.

Agustin Ramos