【问题标题】:Capturing keyboard input and the consequences of hooks捕获键盘输入和钩子的后果
【发布时间】:2011-01-17 14:09:01
【问题描述】:
我正在编写一个 VoIP 程序,其中一个标准功能是按键通话,这意味着您可以在按住一个键的同时录制和发送音频。无论您是在玩电子游戏还是专注于另一个窗口,该键都会做出反应。
我的问题;
- 是否所有 VoIP 程序都明确使用键盘挂钩来实现这一点?例如,ventrilo/teamspeak/skype/mumble
- 我听说键盘挂钩会影响系统的性能,因为每个键盘消息也会发送到 VoIP 应用程序。有没有办法降低成本,性能影响有多大?在我的应用程序中,我的第一要务是性能和有效、低使用计算机资源。
提前致谢
【问题讨论】:
标签:
c++
winapi
input
voip
keyboard-hook
【解决方案1】:
有没有办法降低成本,性能影响有多大?
性能损失和成本与处理程序代码的工作量成正比。
如果你 read the documentation 它说这些是这样做的一些原因(强调我的):
- 出于调试目的监控消息
- 支持录制和播放宏
- 提供对帮助键 (F1) 的支持
- 模拟鼠标和键盘输入
- 实施基于计算机的培训 (CBT) 应用程序
【解决方案2】:
不知道其他程序用什么。
使用它,看看是否存在性能问题。此时您可能正在预优化。我已经看到它在 Pentium I 硬件上的 Windows 应用程序中使用,没有明显的影响。