[Windows 编程] 如何截获 Alt+Tab 事件

本文介绍了如何在Windows编程中处理Alt+Tab事件。由于Alt+Tab组合键的消息直接发送给系统内核,无法在应用程序的消息循环中捕获,可以使用底层键盘钩子或Windows Accessibility API的SetWinEventHook函数来监听EVENT_SYSTEM_SWITCHSTART和EVENT_SYSTEM_SWITCHEND事件,以实现安全地截获Alt+Tab切换事件。

Windows 中 Alt + Tab 组合键被用来在各个程序之间切换。 因此,该键盘消息 (WM_KEYDOWN/UP) 是直接发给系统内核, 在应用程序中的消息循环中截获不到。

 

一个常见问题是,可是有的应用程序想在被Alt+TAB 切换到后台之间做点事情, 这时候该怎么办?

 

方案之一就是用底层的键盘钩子,截获整个系统的键盘输入。但这样做会导致一些效率以及稳定性问题。
另外一个比较方便安全的方案就是用 Windows Accessbility API 的 SetWinEventHook 函数, 监听 EVENT_SYSTEM_SWITCHSTART 和 EVENT_SYSTEM_SWITCHEND 事件。

 

 

这2个事件就是对应用户按下Alt+Tab键 以及 松开 Alt+Tab键,下面是MSDN的解释:

 

EVENT_SYSTEM_SWITCHSTART

The user has pressed ALT+TAB, which activates the switch window. This event is sent by the system, never by servers. The hwnd parameter of the WinEventProc callback function identifies the window to which the user is switching.

If only one application is running when the user presses ALT+TAB, the system sends an EVENT_SYSTEM_SWITCHEND event without a corresponding EVENT_SYSTEM_SWITCHSTA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值