0

我有一个应用程序记录了按下空格键时的日期/时间,但由于各种原因,窗口并不总是有焦点。例如病毒检查弹出窗口、iTunes 更新、Windows 更新等

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

现在我看了一些游戏教程,但他们似乎将操纵杆轮询绑定到屏幕刷新事件中,因为在游戏中我猜如果计算机速度很慢并且屏幕不经常刷新,有操纵杆按钮无论如何,按下不会有任何区别。

这并不真正适合我的需要,所以我正在考虑运行一个线程,该线程将每隔一段时间轮询操纵杆

我的问题是

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

我希望响应至少相当于键盘。如果按住触发器,还需要确保它不会自动重复。

任何示例代码(C#)赞赏

谢谢

亚历克斯

4

3 回答 3

2

如果您只是因为无法捕获键盘事件而想要轮询操纵杆,我认为您需要重新制定策略。

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

  1. 您可以使用 SetWindowsHookEx API 调用在 C# 中设置系统范围的键盘挂钩。

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

在谷歌上搜索一下 C# 中的键盘钩子。这比许多人认为的要容易。

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

于 2009-04-09T02:10:31.367 回答
1

最好的办法是在表单上创建一个 Timer 对象,并将操纵杆检查与 Tick 事件联系起来。

我还发现每 100 毫秒(每秒 10 次)运行类似这样的简单操作对 CPU 使用率的影响可以忽略不计。

于 2009-04-09T01:55:23.430 回答
1

使用AHK (Auto HotKey)之类的东西,它是一种可以编译为 EXE 的简单语言,专为自动化键盘和鼠标而设计,我不能 100% 确定它与操纵杆配合得如何,但我敢肯定他们可能设法为wii遥控器写了一些东西。

如果需要,IRC 频道和论坛也总是有人愿意提供帮助。

于 2009-04-09T02:22:41.557 回答