From a0cbf39ee5416360cd781e4d7c061491eebb7aab Mon Sep 17 00:00:00 2001 From: lwch Date: Tue, 2 Nov 2021 14:43:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E7=BC=96=E8=AF=91=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/client/tunnel/vnc/define/user32_windows.go | 1 + code/client/tunnel/vnc/worker/capture_windows.go | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/code/client/tunnel/vnc/define/user32_windows.go b/code/client/tunnel/vnc/define/user32_windows.go index dc71df1..fc29ce1 100644 --- a/code/client/tunnel/vnc/define/user32_windows.go +++ b/code/client/tunnel/vnc/define/user32_windows.go @@ -12,6 +12,7 @@ var ( FuncGetDC, _ = syscall.GetProcAddress(syscall.Handle(libUser32), "GetDC") FuncReleaseDC, _ = syscall.GetProcAddress(syscall.Handle(libUser32), "ReleaseDC") FuncGetCursorInfo, _ = syscall.GetProcAddress(syscall.Handle(libUser32), "GetCursorInfo") + FuncGetIconInfo, _ = syscall.GetProcAddress(syscall.Handle(libUser32), "GetIconInfo") FuncDrawIcon, _ = syscall.GetProcAddress(syscall.Handle(libUser32), "DrawIcon") ) diff --git a/code/client/tunnel/vnc/worker/capture_windows.go b/code/client/tunnel/vnc/worker/capture_windows.go index b62b30c..b8ca4f6 100644 --- a/code/client/tunnel/vnc/worker/capture_windows.go +++ b/code/client/tunnel/vnc/worker/capture_windows.go @@ -78,24 +78,24 @@ func (worker *Worker) capture() error { } defer worker.copyImageData(bitmap) if !worker.showCursor { - return + return nil } - var curInfo CURSORINFO - curInfo.CbSize = DWORD(unsafe.Sizeof(curInfo)) + var curInfo define.CURSORINFO + curInfo.CbSize = define.DWORD(unsafe.Sizeof(curInfo)) ok, _, err = syscall.Syscall(define.FuncGetCursorInfo, 1, uintptr(unsafe.Pointer(&curInfo)), 0, 0) if ok == 0 { logging.Error("get cursor info: %v", err) return nil } - if curInfo.Flags == CURSOR_SHOWING { - var info ICONINFO + if curInfo.Flags == define.CURSOR_SHOWING { + var info define.ICONINFO ok, _, err = syscall.Syscall(define.FuncGetIconInfo, 2, uintptr(curInfo.HCursor), uintptr(unsafe.Pointer(&info)), 0) if ok == 0 { logging.Error("get icon info: %v", err) return nil } - x := curInfo.PTScreenPos.X - LONG(info.XHotspot) - y := curInfo.PTScreenPos.Y - LONG(info.YHotspot) + x := curInfo.PTScreenPos.X - define.LONG(info.XHotspot) + y := curInfo.PTScreenPos.Y - define.LONG(info.YHotspot) ok, _, err = syscall.Syscall6(define.FuncDrawIcon, 4, memDC, uintptr(x), uintptr(y), uintptr(curInfo.HCursor), 0, 0) if ok == 0 { logging.Error("draw icon: %v", err)