diff --git a/util/winutil/winutil.go b/util/winutil/winutil.go new file mode 100644 index 000000000..cf6abb450 --- /dev/null +++ b/util/winutil/winutil.go @@ -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 +}