嵌入式设备中web业务软件无干扰接收用户按键的方法

文档序号:6617130阅读:241来源:国知局
专利名称:嵌入式设备中web业务软件无干扰接收用户按键的方法
技术领域
本发明涉及一种嵌入式设备中WEB业务软件无干扰接收用户按键的方法。
背景技术
用户通过使用遥控器或外接键盘操控嵌入式设备中的核心业务软件,是嵌入式设备使用的基本操作方式。在基于微软WES7 (全称Windows Embeded Standard 7)的嵌入式设备上,这一操作方式仍然是用户使用该设备的主要操作方式之一,但是由于WES7嵌入式设备除了提供红外接口供遥控器使用外,往往还提供了 USB接口供鼠标、键盘使用;同时WES7是多任务操作系统,用户可能会同时启动多个软件,这些软件中有一些是第三方软件,这些软件可能在某个时刻会弹出某个窗口。在这种情况下,如何实现核心业务软件能够始终正常响应用户按键(遥控器或键盘)操作而不受鼠标操作和其他软件启动退出、窗口高亮等抢夺业务软件窗口输入焦点行为的影响就是要解决的关键技术问题。目前解决上述问题的常用技术是设法让要接收按键的软件窗口始终高亮。由于WES7在收到用户按键时,默认会将该按键发送系统当前高亮的窗口,因此目前可用的一种解决方案是监测软件窗口高亮状态,当发现不是高亮时强制设置其为高亮。此方法一般情况下没有问题,但是由于WES7的窗口高亮状态总是临时状态,这样就需要始终检查和维护该软件窗口的高亮状态,一旦发现用户启动了其他软件或操作了其他软件窗口导致本软件高亮状态消失,就要赶紧再设置本软件为高亮状态,这样在非高亮至高亮状态的之间就有一个空闲时间,若在这个空闲时间内用户操作了按键,就会出现按键消息被目标窗口遗漏的情况。从另一方面来讲,现在B-S架构是互联网业务的主流架构模式之一,在WES7嵌入式设备软件系统中,业务软件常常以承载WEB页面的WEB客户端软件的形式存在。由于WEB业务的复杂和多样性,有时需要两个或多个WEB窗口同时接收和处理用户按键。在这种情况下,如何实现业务软件收到按键后,将按键正确的分发给需要接收按键的WEB窗口处理,就是要解决的另一关键问题之一。目前解决这一问题的常用技术是将接收到的按键值重新组装为系统标准按键消息WM_KEYDOWN/WM_KEYUP,并通过WINDOWS API PostMessage函数投递该消息到希望接收按键的窗口。该技术对于普通WINDOWS窗口是有效的,但对于内嵌IE控件的WEB页面窗口则是无效的,表现在WEB页面窗口的WEB页面接收不到发过来的普通按键。

发明内容
本发明针对现有技术不足,提出一种嵌入式设备中WEB业务软件无干扰接收用户按键的方法,可以实现在多浏览器窗口模式下,用户操作按键后,无论浏览器窗口有无焦点,这些浏览器窗口中的页面均能正确接收到用户操作的按键消息。本发明所采用的技术方案
一种嵌入式设备中WEB业务软件无干扰接收用户按键的方法,通过如下步骤,完成用户按键信息从用户操作按键到目标窗口正确接收;
a、采用WES7低层键盘钩子拦截用户按键并将按键封装为按键消息发送给业务软件专用于接收用户按键消息的窗口;
b、业务软件窗口收到消息后再将接收到的按键消息解析出来并重新封装为WES7标准按键消息,同时设置当前线程键盘状态掩码;
C、然后将按键消息发送给需要按键的窗口。所述的嵌入式设备中WEB业务软件无干扰接收用户按键的方法,实现步骤a的流程如下
1)编写底层键盘钩子程序(DLL程序),在其中指定业务软件专用于接收按键消息的窗口标识;
2)编写底层键盘钩子的管理程序(EXE),用于安装底层键盘钩子;
3)管理程序运行时调用系统API函数SetWindowsHookEx在系统中安装该底层键盘钩子,底层键盘钩子即时生效;
4)户操作按键时,系统将按键传递给低层键盘钩子进行拦截处理;
5)低层键盘钩子收到系统传过来的按键后,将该键值和当前功能键CTRL/ALT/SHIFT/WIN的按下抬起状态封装为自定义按键消息发送给业务软件专用于接收按键消息的窗口。所述的嵌入式设备中WEB业务软件无干扰接收用户按键的方法,业务软件窗口收到键盘钩子发过来的按键消息后,解析出当前按键和系统功能键当前状态;将当前键值封装为WES7标准按键消息WM_KEYDOWN/WM_KEYUP,将功能键当前状态与系统当前键盘状态掩码进行组合,并调用系统API函数SetKeyboardState重新设置到当前按键输入线程中,以确保系统当前键盘状态跟键盘钩子收到按键时的系统当前键盘状态一致。所述的嵌入式设备中WEB业务软件无干扰接收用户按键的方法,确定需接收按键的WEB窗口,然后遍历这些窗口,针对每个窗口,置其中WEB控件为有焦点状态,然后将封装好的WM_KEYDOWN/WM_KEYUP消息以PostMessage方式发送给该WEB控件的内部窗口 ;这样,每个需要接收按键的WEB窗口的WEB页面就都正常接收到按键了。本发明的有益积极效果1、本发明WES7嵌入式设备中WEB业务软件无干扰接收用户按键的方法,在多浏览器窗口模式下,用户操作按键后,无论浏览器窗口有无焦点,这些浏览器窗口中的页面均能正确接收到用户操作的按键消息。只要按照本文中的方法给WEB窗口发送按键,就能保证WEB窗口页面正常收到按键,就像用户直接在该浏览器窗口高亮的情况下操作按键一样。2、本发明WES7嵌入式设备中WEB业务软件无干扰接收用户按键的方法,适用范围广,可应用于WES7,还可应用于标准WINDOWS 7。用户进行按键操作时,目标软件窗口接收按键事件无遗漏且不受鼠标操作和其他软件启动、退出、窗口显示隐藏的影响;用户体验好,按键事件无遗漏。3、本发明WES7嵌入式设备中WEB业务软件无干扰接收用户按键的方法,业务软件可以将接收到的原始按键消息转换为其他按键或按键组合发送给WEB页面的目的。这样当遥控器键值变化或业务页面键值变化时,就能轻易应对。扩展性好。键盘钩子与业务软件既可以处于同一进程,也可以处于不同进程,本解决方案都有效。兼容性好。
具体实施例方式实施例一本发明嵌入式设备中WEB业务软件无干扰接收用户按键的方法,通过如下步骤,完成用户按键信息从用户操作按键到目标窗口正确接收;
a、采用WES7低层键盘钩子拦截用户按键并将按键封装为按键消息发送给业务软件专用于接收用户按键消息的窗口;
b、业务软件窗口收到消息后再将接收到的按键消息解析出来并重新封装为WES7标准按键消息,同时设置当前线程键盘状态掩码;
C、然后将按键消息发送给需要按键的窗口。实施例二 本发明嵌入式设备中WEB业务软件无干扰接收用户按键的方法,与实施例一不同的是,进一步的公开了其中步骤a的实现流程如下
1)编写底层键盘钩子程序(DLL程序),在其中指定业务软件专用于接收按键消息的窗口标识;
2)编写底层键盘钩子的管理程序(EXE),用于安装底层键盘钩子;
3)管理程序运行时调用系统API函数SetWindowsHookEx在系统中安装该底层键盘钩子,底层键盘钩子即时生效;
4)户操作按键时,系统将按键传递给低层键盘钩子进行拦截处理;
5)低层键盘钩子收到系统传过来的按键后,将该键值和当前功能键CTRL/ALT/SHIFT/WIN的按下抬起状态封装为自定义按键消息发送给业务软件专用于接收按键消息的窗口。实施例三本发明嵌入式设备中WEB业务软件无干扰接收用户按键的方法,与实施例二不同的是,在实施例二的基础上,通过下属步骤,完成从用户操作按键到目标窗口正确接收的全过程
业务软件窗口收到键盘钩子发过来的按键消息后,解析出当前按键和系统功能键当前状态;将当前键值封装为WES7标准按键消息WM_KEYDOWN/WM_KEYUP,将功能键当前状态与系统当前键盘状态掩码进行组合,并调用系统API函数SetKeyboardState重新设置到当前按键输入线程中,以确保系统当前键盘状态跟键盘钩子收到按键时的系统当前键盘状态一致;
确定需接收按键的WEB窗口,然后遍历这些窗口,针对每个窗口,置其中WEB控件为有焦点状态,然后将封装好的WM_KEYDOWN/WM_KEYUP消息以PostMessage方式发送给该WEB控件的内部窗口 ;这样,每个需要接收按键的WEB窗口的WEB页面就都正常接收到按键了。
权利要求
1.一种嵌入式设备中WEB业务软件无干扰接收用户按键的方法,其特征是通过如下步骤,完成用户按键信息从用户操作按键到目标窗口正确接收; a、采用WES7低层键盘钩子拦截用户按键并将按键封装为按键消息发送给业务软件专用于接收用户按键消息的窗口; b、业务软件窗口收到消息后再将接收到的按键消息解析出来并重新封装为WES7标准按键消息,同时设置当前线程键盘状态掩码; C、然后将按键消息发送给需要按键的窗口。
2.根据权利要求1所述的嵌入式设备中WEB业务软件无干扰接收用户按键的方法,其特征是实现步骤a的流程如下 1)编写底层键盘钩子程序,在其中指定业务软件专用于接收按键消息的窗口标识; 2)编写底层键盘钩子的管理程序,用于安装底层键盘钩子; 3)管理程序运行时调用系统API函数SetWindowsHookEx在系统中安装该底层键盘钩子,底层键盘钩子即时生效; 4)户操作按键时,系统将按键传递给低层键盘钩子进行拦截处理; 5)低层键盘钩子收到系统传过来的按键后,将该键值和当前功能键CTRL/ALT/SHIFT/WIN的按下抬起状态封装为自定义按键消息发送给业务软件专用于接收按键消息的窗口。
3.根据权利要求2所述的嵌入式设备中WEB业务软件无干扰接收用户按键的方法,其特征是业务软件窗口收到键盘钩子发过来的按键消息后,解析出当前按键和系统功能键当前状态;将当前键值封装为WES7标准按键消息WM_KEYDOWN/WM_KEYUP,将功能键当前状态与系统当前键盘状态掩码进行组合,并调用系统API函数SetKeyboardState重新设置到当前按键输入线程中,以确保系统当前键盘状态跟键盘钩子收到按键时的系统当前键盘状态一致。
4.根据权利要求3所述的嵌入式设备中WEB业务软件无干扰接收用户按键的方法,其特征是确定需接收按键的WEB窗口,然后遍历这些窗口,针对每个窗口,置其中WEB控件为有焦点状态,然后将封装好的WM_KEYDOWN/WM_KEYUP消息以PostMessage方式发送给该WEB控件的内部窗口 ;这样,每个需要接收按键的WEB窗口的WEB页面就都正常接收到按键了。
全文摘要
本发明涉及一种嵌入式设备中WEB业务软件无干扰接收用户按键的方法。一种嵌入式设备中WEB业务软件无干扰接收用户按键的方法,通过如下步骤完成用户按键信息从用户操作按键到目标窗口正确接收;a、采用WES7低层键盘钩子拦截用户按键并将按键封装为按键消息发送给业务软件专用于接收用户按键消息的窗口;b、业务软件窗口收到消息后再将接收到的按键消息解析出来并重新封装为WES7标准按键消息,同时设置当前线程键盘状态掩码;c、然后将按键消息发送给需要按键的窗口。在多浏览器窗口模式下,用户操作按键后,无论浏览器窗口有无焦点,这些浏览器窗口中的页面均能正确接收到用户操作的按键消息。就像用户直接在该浏览器窗口高亮的情况下操作按键一样。
文档编号G06F9/44GK103019699SQ20121048143
公开日2013年4月3日 申请日期2012年11月23日 优先权日2012年11月23日
发明者贾小波, 张永强, 赵付强, 徐圆圆, 连毅, 刘飞 申请人:郑州威科姆科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1