util/winutil: add little Windows utility package

Code from Alex Brainman, split out of another change. I changed it to
a comma-ok return and tweaked the docs a bit.
This commit is contained in:
Brad Fitzpatrick 2021-02-26 20:42:00 -08:00
parent fec9dcbda1
commit e98cdbb8b6
1 changed files with 21 additions and 0 deletions

21
util/winutil/winutil.go Normal file
View File

@ -0,0 +1,21 @@
// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build windows
// Package winuntil contains misc Windows/win32 helper functions.
package winutil
// GetDesktopPID searches the PID of the process that's running the
// currently active desktop and whether it was found.
// Usually the PID will be for explorer.exe.
func GetDesktopPID() (pid uint32, ok bool) {
hwnd := windows.GetShellWindow()
if hwnd == 0 {
return 0, false
}
var pid uint32
windows.GetWindowThreadProcessId(hwnd, &pid)
return pid, pid != 0
}