level 9
sevk
楼主
# CStruct Examples ,列举所有进程
require 'windows/tool_helper'
require 'win32struct'
include Windows::ToolHelper
module Windows
MAX_PATH = 260
module ToolHelper
class PROCESSENTRY32 < Win32Struct
DWORD :dwSize
DWORD :cntUsage
DWORD :th32ProcessID
DWORD :th32DefaultHeapID
DWORD :th32ModuleID
DWORD :cntThreads
DWORD :th32ParentProcessID
LONG :pcPriClassBase
DWORD :dwFlags
CHAR :szExeFile,[MAX_PATH]
end
end
end
def show_all_processes
proc_enrty32 = PROCESSENTRY32.new
proc_enrty32.dwSize = PROCESSENTRY32.__size__
snap_handle = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS,0)
if Process32First(snap_handle,proc_enrty32.data)
show_process proc_enrty32
while true
break if !Process32Next( snap_handle,proc_enrty32.data )
show_process proc_enrty32
end
end
end
def show_process proc_enrty32
printf"%20s 0x%08X\n",proc_enrty32.szExeFile.to_cstr,proc_enrty32.th32ProcessID
end
printf"%20s %s\n","<Process Name>","<PID>"
printf"%20s %s\n","--------------","-----"
show_all_processes
http://cstruct.rubyforge.org/examples/show_processes.rb.html