[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Kill Process by it's name

Agustin Ramos

1/17/2008 1:55:00 PM

[Note: parts of this message were removed to make it a legal post.]

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

5 Answers

Mikel Lindsaar

1/17/2008 3:05:00 PM

0

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,

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

Phlip

1/17/2008 3:15:00 PM

0

Agustin Ramos wrote:

> 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.

That is a Win32 kernel question, so if this doesn't help, repost to a win32
kernel forum.

http://www.interactivecode.com/programming-coding-1/re-need-function-kill-pro...

That's my port of 'killall' to the PSAPI.LIB. It might crash differently from
yours. If you can't port it to WIN32 calls, you might compile it with a C++
compiler, then shell to it with system('').

Ask here if you get stuck!

--
Phlip

Lars Christensen

1/17/2008 3:42:00 PM

0

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
}

Tommy Nordgren

1/17/2008 4:07:00 PM

0


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
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
-----------------------------------
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




luis lopez

1/17/2008 4:39:00 PM

0

[Note: parts of this message were removed to make it a legal post.]

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
>