2008/12/06

RubyでWMIを使ってプロセス一覧を取得しExcleに吐き出す

[-*煙猴*-] RubyでWindowsのイベントログを検索して出力のコメントで@lample_lifeから「VBSでWMIを使ってプロセス一覧を取得しExcleに吐き出す方法」を教えてもらったので、それもRubyでやってみました。
WMIとかCOMは奥が深すぎてまだ良く理解できていないけど、手軽に「目に見えて動くもの」が作れて面白いです。

#!/cygdrive/c/InstantRails/ruby/bin/ruby -Ks

require 'win32ole'

xl = WIN32OLE.new('Excel.Application')
xl.Visible = true
book = xl.Workbooks.Add
sheet = book.Worksheets.Item(1)

locator = WIN32OLE.new("WbemScripting.SWbemLocator")
services = locator.ConnectServer(".","root/cimv2")
procset = services.ExecQuery("Select * From Win32_Process")

x=2
procset.each do |proc|
sheet.Cells.Item(x,2).Value=proc.ProcessId
sheet.Cells.Item(x,3).Value=proc.Caption
sheet.Cells.Item(x,4).Value=proc.Name
x=x+1
end

exit