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