首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在光标离开屏幕时获取鼠标移动信息

如何在光标离开屏幕时获取鼠标移动信息
EN

Stack Overflow用户
提问于 2018-08-26 23:44:52
回答 1查看 761关注 0票数 2

请参阅末尾的更新

我是一个老的堆栈溢出用户(就像地球上的大多数开发人员一样),但这是我在这里的第一个问题。

我正在尝试使用“空中鼠标”来玩游戏(将鼠标指向屏幕),但由于鼠标传感器是陀螺仪,因此在屏幕外移动时存在一些问题,我想通过软件来解决这些问题。

使用这种陀螺鼠标,当用户将其手臂指向屏幕外时,光标会停在屏幕限制处,这是没有问题的。然而,当他向后移动手臂时,无论与屏幕的距离有多远,光标都会立即在屏幕上移动。这会在空中鼠标的实际位置和光标之间造成巨大的差异。

这可以通过简单地控制屏幕外的像素数和方向,结合一些事件处理来解决。如果我可以将-X、+X、-Y和+Y中移动的“屏幕外”像素数相加,就可以阻止/取消鼠标移动事件--或者将光标设置到屏幕边缘的先前位置--直到控件告诉我物理鼠标正指向屏幕。就在那时,我会允许光标自由移动。

也许这不是那么没用,但这是一个有趣的问题,看看这个工作将会是地狱的乐趣!

目前,基于this great project,我只能声明鼠标何时离开屏幕,但无法控制鼠标移动的距离和方向,从而正确地实现我正在尝试的内容。在我看来,这种信息对我目前的Windows知识来说太低级了。

所以,需要明确的是:在C# (接受其他语言,但我必须学习很多东西;)中,当光标位于屏幕的极限位置时,我如何才能获得任何类型的“增量位置”信息或移动方向?

恕我直言,我对使用不同类型的控制器以及“你不应该这样做”的答案并不感兴趣。我有这个问题要解决,使用这些元素,能让它工作起来就太好了!

更新:

好了,这是我到目前为止的进展。

为了获得原始鼠标数据并了解鼠标在屏幕外的移动,我必须使用一些windows API函数注册我的应用程序,以接收WM_INPUT消息。

基于我找到的一个very old code,我能够获得鼠标的原始数据,并准确地实现我想要的东西。但这段代码是基于WdnProc回调的,所以它只有在我的应用程序具有焦点时才能工作。当焦点在其他地方时,我需要它也能工作--毕竟,我正在努力改进陀螺鼠标提供的指向,用于第三方游戏。

看起来我应该使用一个钩子(a good example here),但是我不知道如何钩住输入消息。我试图合并上面两个链接的代码,但第一个链接需要传递给WdnProc的message.LParam --这在仅挂钩鼠标事件时似乎不可用。

现在,我已经超出了我的能力范围,无法取得一些真正的进步。有什么想法吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52027837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档