首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >轮询操纵杆C#

轮询操纵杆C#
EN

Stack Overflow用户
提问于 2009-04-09 01:51:22
回答 3查看 2.4K关注 0票数 0

我有一个应用程序,它记录空格键被按下时的日期/时间--不幸的是,由于各种原因,窗口并不总是有焦点。病毒检查器弹出、itunes更新、windows更新等。

所以,我认为一个很酷的想法是使用一个操纵杆按钮,然后不管哪个窗口有焦点,我总是可以检测按钮按下事件,并记录它被按下的日期/时间。

现在我看了几个游戏教程,但他们似乎把操纵杆轮询与屏幕刷新事件联系在一起,因为在游戏中,如果电脑速度慢,屏幕不经常刷新,按下操纵杆按钮也不会有什么影响。

这并不符合我的需要,所以我正在考虑运行一个线程,它会经常轮询操纵杆。

我的问题是

  1. 背景线程是最好的解决方案吗?
  2. 我应该多久投票一次操纵杆
  3. 我应该使用什么样的计时器来确定轮询频率。

我希望这些回复至少相当于一个键盘。还需要确保它不会自动重复,如果扳机是按住的。

任何示例代码(C#)都非常感谢

谢谢

亚历克斯

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-04-09 01:55:23

您最好的选择是在窗体上创建一个计时器对象,并将操纵杆检查与滴答事件联系起来。

我还发现,每100 10运行一次这样的简单程序(每秒10次)对CPU使用的影响可以忽略不计。

票数 1
EN

Stack Overflow用户

发布于 2009-04-09 02:10:31

如果你想去轮询操纵杆仅仅因为你不能捕捉键盘事件,我认为你需要重新制定你的策略。

即使您的表单没有焦点,也有一些方法可以确保您知道键盘状态。

  1. 您可以设置一个系统范围的键盘挂钩,这可以在C#中使用SetWindowsHookEx API调用来完成。

这是对非托管代码和Windows的深入研究,但我认为这比轮询操纵杆更好,因为您不需要仅仅因为需要在空格键上捕捉日期时间就向计算机添加操纵杆。

在google上搜索一下C#中的键盘挂钩。这比许多人所相信的要容易。

我不认为使用计时器对象来做这是一个好主意。因为我相信你说过你需要按下钥匙。

票数 2
EN

Stack Overflow用户

发布于 2009-04-09 02:22:41

使用像汽车HotKey( AHK )这样的简单语言,可以编译成EXE,并且是为键盘和鼠标的自动化而设计的,我不能100%确定它与操纵杆的工作效果如何,但我确信他们有可能为wii遥控器编写了一些东西。

此外,IRC频道和论坛总是有人们愿意帮助,如果需要的话。

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

https://stackoverflow.com/questions/732509

复制
相关文章

相似问题

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