x1 complained: > --not sure how accurate this would be once 2 or more instances of > "notepad" are running simultaneously. pids = [] ObjectSpace.each_object(Array) do |arr| pid << arr[3] if arr.size == 4 && arr[0, 3] == ["notepad", nil, nil] end You can easily collect them all. If you get one list before the Create call and one after, the difference is likely to be the PID you're after. Of course, in practical Ruby, it's going to be easier to use Process.create #=> pid from the Win32-Utils library, or even to use Win32API or DL to call CreateProcess() directly. Cheers, Dave