From 5957e315c9e8638cad30258e9b7142a713c7bcb1 Mon Sep 17 00:00:00 2001 From: vcaesar Date: Wed, 11 Apr 2018 21:07:17 +0800 Subject: [PATCH] update activePid allow Windows via hwnd --- robotgo.go | 12 +++++++++--- window/goWindow.h | 8 ++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/robotgo.go b/robotgo.go index d11e4cb..b82bfb9 100644 --- a/robotgo.go +++ b/robotgo.go @@ -1457,9 +1457,15 @@ func FindIds(name string) ([]int32, error) { return pids, err } -// ActivePID active window by PID -func ActivePID(pid int32) { - C.active_PID(C.uintptr(pid)) +// ActivePID active window by PID, +// If args[0] > 0 on the Windows platform via a window handle to active +func ActivePID(pid int32, args ...int) { + var hwnd int + if len(args) > 0 { + hwnd = args[0] + } + + C.active_PID(C.uintptr(pid), C.uintptr(hwnd)) } // ActiveName active window by name diff --git a/window/goWindow.h b/window/goWindow.h index af2cc89..a704179 100644 --- a/window/goWindow.h +++ b/window/goWindow.h @@ -85,7 +85,7 @@ void set_active(const MData win){ } #endif -void active_PID(uintptr pid){ +void active_PID(uintptr pid, uintptr isHwnd){ MData win; #if defined(IS_MACOSX) // Handle to a AXUIElementRef @@ -94,7 +94,11 @@ void active_PID(uintptr pid){ win.XWin = (Window)pid; // Handle to an X11 window #elif defined(IS_WINDOWS) // win.HWnd = (HWND)pid; // Handle to a window HWND - win.HWnd = GetHwndByPId(pid); + if (isHwnd == 0) { + win.HWnd = GetHwndByPId(pid); + } else { + win.HWnd = (HWND)pid; + } #endif SetActive(win);