Explorar o código

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.
Brad Fitzpatrick %!s(int64=5) %!d(string=hai) anos
pai
achega
e98cdbb8b6
Modificáronse 1 ficheiros con 21 adicións e 0 borrados
  1. 21 0
      util/winutil/winutil.go

+ 21 - 0
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
+}