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)