利用HardwareButton操作Windows Mobile的硬件按钮

    大家知道,在Windows Mobile的应用程序中,我们可以利用模拟按键VK来模拟一些硬件按键的功能,如调用今日屏幕、锁定键盘、关闭设备、打开扬声器等等(具体可以参考黄季东的帖子:再谈Windows Mobile上的模拟按键操作)。在有些情况下,我们需要知道用户按下的是哪个硬件按钮,并且重写该硬件按钮的功能(如游戏程序)。而硬件按钮对应的是某个具体的值,我们可以使用该值来判断。在.NET CF中,HardwareButton类允许重写 Pocket PC 硬件按钮的功能。

    首先,我们需要在应用程序中添加对“Microsoft.WindowsCE.Forms”该命名中间的引用。

    然后,创建 HardwareButton 的实例。

hwb1 = new HardwareButton(); hwb2 = new HardwareButton(); ……

    接着,将 AssociatedControl 属性设置为要激活的窗体或控件。

hwb1.AssociatedControl = this; hwb2.AssociatedControl = this; ……

    最后,将 HardwareKey 属性设置为 HardwareKeys 枚举值之一。最多可配置六个硬件按钮。

hwb1.HardwareKey = HardwareKeys.ApplicationKey1; hwb2.HardwareKey = HardwareKeys.ApplicationKey2; ……

    同时,在窗体的OnKeyUp事件函数中,添加对相应按钮的处理,

private void OnKeyUp(object sender, KeyEventArgs e) {     switch ((HardwareKeys)e.KeyCode)     {         case HardwareKeys.ApplicationKey1:             statusBar1.Text = "Button 1 pressed.";             ……             break;         case HardwareKeys.ApplicationKey2:             statusBar1.Text = "Button 2 pressed.";             ……             break;         default:             break;     } }

    需要注意的是:

    1. 某些 Pocket PC 的硬件按钮数目不是六个。并且操作系统不支持所有的按钮。Windows Mobile 2003 for Pocket PC 支持四个按钮,而用于 Pocket PC 的 Windows Mobile 5.0 版软件支持五个按钮。

2. Smartphone 和其他非 Pocket PC 类的 Windows CE 设备上不支持此类。

测试结果

在WM6.0 Professional Emulator中测试,得到的具体值如下:

    --

“左右上下按键”为37, 38, 39, 40 

    --

“Enter键”为13

    --

“左侧上下键”为38,40

    --

“右侧按键”为121

    --

“拨号按键”为114

    --

“结束按键”为115

在Cingular8125(WM6.0 Professional)中测试,得到的具体值如下:

    --

“左右上下按键”为37, 38, 39, 40 

    --

“Enter键”为13

    --

“无线管理键”为198

    --

“信息管理键”为193

    --

“Internet键”为194

    --

“拨号按键”为114

    --

“结束按键”为115

    --

“语音按键”为196

    --

“相机按键”为195

    以上是我的测试结果,希望对大家有用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

Visual Studio实用小技巧

有一个有关微软Office的笑话,说的是它的特性太多: 当你觉得自己发现了一个Office的新特性时,它已经存在很多年了。 本文将介绍一些在Visual Stu...

213100
来自专栏程序员的SOD蜜

使用CefSharp开发一个12306“安心刷票弹窗通知”工具

有需求就要改进 最近两年没有在春节回家过年了,主要是票太难买,虽然之前写了一个12306“无声购票弹窗”工具,解决了抢票问题,但是全家老小一起回去还是很累,干脆...

685100
来自专栏大数据钻研

前端开发面试题总结之——HTML

---- 相关知识点 web标准、 web语义化、 浏览器内核、 兼容性、 html5... 题目&答案 Doctype作用?严格模式与混杂模式如何区分?它们有...

38080
来自专栏HT

基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)

今天没有延续上一篇讲的内容,穿插一段小插曲,WebSocket 实时数据通讯同步的问题,今天我们并不是很纯粹地讲 WebSocket 相关知识,我们通过 Web...

27170
来自专栏逸鹏说道

如何在UWP中统一处理不同设备间的页面回退逻辑

在本篇缪文中,楼主打算给UWP开发的初学者讲述一个在开发中经常遇到的很现实的问题:页面回退逻辑 。 众所周知,UWP的应用程序理论上是可以运行在W...

40180
来自专栏逸鹏说道

Pycharm For Linux

之前说过JetBrains系列的破解方式:https://www.cnblogs.com/dunitian/p/8478252.html

14830
来自专栏hightopo

基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)

19320
来自专栏黑泽君的专栏

Mark Down Pad2在 windows 10 下的安装注册以及 Mark Down Pad2 报错分析

  Mark Down Pad是Windows下的一个多功能Makrdown编辑器。即时看到你的Makrdown文件,当你创建它们的时候,看起来就像是在HTML...

14510
来自专栏Web 开发

Deploy WordPress On SAE

也没怎么刻意去选择,从各种cPanel主机,到VPS,再到AppFog等Pass,基本上都玩了一遍了。

10500
来自专栏企鹅号快讯

5 款最酷的 Linux 终端模拟器

Xiki 首先我要推荐的第一个终端是 Xiki。 Xiki 是 Craig Muth 的智慧结晶,他是一个天才程序员,也是一个有趣的人(有趣在此处的意思是幽默,...

564100

扫码关注云+社区

领取腾讯云代金券