| 76 | } |
| 77 | |
| 78 | func (p *uiProcess) Wait() (uint32, error) { |
| 79 | handle := windows.Handle(atomic.LoadUintptr(&p.handle)) |
| 80 | s, err := windows.WaitForSingleObject(handle, syscall.INFINITE) |
| 81 | switch s { |
| 82 | case windows.WAIT_OBJECT_0: |
| 83 | case windows.WAIT_FAILED: |
| 84 | return 0, err |
| 85 | default: |
| 86 | return 0, errors.New("unexpected result from WaitForSingleObject") |
| 87 | } |
| 88 | var exitCode uint32 |
| 89 | err = windows.GetExitCodeProcess(handle, &exitCode) |
| 90 | if err != nil { |
| 91 | return 0, err |
| 92 | } |
| 93 | p.release() |
| 94 | return exitCode, nil |
| 95 | } |
| 96 | |
| 97 | func (p *uiProcess) Kill() error { |
| 98 | handle := windows.Handle(atomic.LoadUintptr(&p.handle)) |