【发布时间】:2014-07-10 17:59:51
【问题描述】:
我正在尝试在我的 Java 代码中接收 WM_HOTKEY 事件。我已经成功地让一些一次性代码工作,但我知道将 Java GUI 代码与 Windows 消息循环集成需要谨慎。
从 Windows 示例看来,User32.INSTANCE.GetMessage 是通知我已注册使用 User32.INSTANCE.RegisterHotKey 的 WM_HOTKEY 事件的关键函数
所以...我想知道:
- 我是否正确理解 RegisterHotKey 和我的消息循环必须在同一个 Java 线程上运行?
- 我是否正确理解 Windows 的 GetMessage 函数必须从我用于创建 Windows 的同一线程调用,即 Java Swing 的事件调度线程?
- 如果是这样,我无法在事件调度线程上创建消息循环,因为它会阻塞其他事件。我应该改用 PeekMessage 吗?
- 如果是这样,我会有轮询代码,这不是我最喜欢的。我应该多久调用一次 PeekMessage? PeekMessage 轻巧快速吗?
非常感谢您帮助 Java 程序员了解 Win API 概念。
【问题讨论】:
标签: java swing winapi event-handling jna