关于SetCursorPos和WH_MOUSE_LL的问题

cds27 cds27 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

IntPtr hookProc(int code, IntPtr wparam, IntPtr lparam)
{
if (code < 0) return CallNextHookEx(_nextHookPtr, code, wparam, lparam);

MSLLHOOKSTRUCT msllStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lparam, typeof(MSLLHOOKSTRUCT));
if (msllStruct.pt.X>=300)
{
this.Text = Cursor.Position.ToString();
SetCursorPos(300, msllStruct.pt.Y);
}

return IntPtr.Zero;
}

public void SetHook()
{
if (_nextHookPtr != IntPtr.Zero)
{
return;
}

HookProc myhookProc = new HookProc(hookProc);
//_nextHookPtr = SetWindowsHookEx((int)HookType.MouseLL, myhookProc, IntPtr.Zero, GetCurrentThreadId());
_nextHookPtr = SetWindowsHookEx((int)HookType.MouseLL, myhookProc, GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);
}


这段代码是全局的鼠标HOOK,让鼠标x坐标大于300的时候,回到300。
但只有当鼠标点了左右键的时候,光标才会回到300。
该如何解决呢?

请不要回复我Cursor.Clip = .......... ,我只是想了解上述代码的问题,和解决方法
...全文

相关推荐

mfc鼠标记录与回放程序

mfc鼠标记录与回放程序 对鼠标动作进行记录,并模拟鼠标动作

liuyingjane

用C语言实现Windows下的鼠标左右键交换功能

Windows API(Application Programming Interface)是微软公司为其操作系统定义的一系列函数、宏、数据类型和数据结构,用于帮助开发者创建应用程序。在C语言中,通过包含相应的头文件,我们可以调用这些API函数来与Windows操作系统进行交互,执行各种系统级任务。GetAsyncKeyState函数是Windows API中用于检测鼠标或键盘按键当前状态的一个重要函数。该函数的工作原理是通过返回按键的虚拟键码以及该键的当前状态(按下的或者释放的)。

xinwuji312

Windows C++实现游戏光标锁定:原理剖析与《我的世界》基岩版实战

在Windows桌面应用与游戏开发中,光标管理是提升用户体验的关键技术之一。其核心原理在于通过系统API控制鼠标指针的移动范围与行为,确保输入焦点稳定。从技术价值看,精准的光标锁定能有效解决窗口化游戏或全屏应用中的光标逃逸问题,避免操作中断,这对于需要沉浸式体验的第一人称射击、模拟建造等游戏类型尤为重要。应用场景广泛,尤其在《我的世界》这类需要持续视角控制的游戏中,光标意外滑出窗口会严重影响操作。本文深入探讨了利用C++调用原生Windows API(如ClipCursor)实现动态光标限制的方案,并针对《

weixin_34015336

C++用钩子实现重现用户操作

用钩子实现记录用户键盘、鼠标操作并重现。

xeasy

Delphi 键盘鼠标操作回放

键盘鼠标操作回放 记录用户操作,并能回放鼠标键盘事件

youxingyu_youzi
评论 8
收藏 已收藏
分享
返回顶部
cds27
C# 111,128 成员 642,536 内容