`
guowee
  • 浏览: 173637 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

控制Windows Mobile手机的键盘操作

阅读更多
如何控制Windows Mobile 手机键盘操作


最近在做Mobile上的应用的时候,想截取Windows Mobile的按下OK键的消息,并做一些自定义处理。

在网上看了很多文章,但是发现很少有谈到这个问题的。后来还是找到了点资料。所以拿出来和大家分享一下。

首先要在OnInitDialog注册热键,这样才能在WM_HOTKEY消息中得到响应。

typedef BOOL(__stdcall *UnregisterFunc1Proc)(UINT,UINT);
	HINSTANCE hCoreDll;
	UnregisterFunc1Proc procUndergisterFunc;
	hCoreDll = LoadLibrary(_T( "coredll.dll "));
	ASSERT(hCoreDll);
	procUndergisterFunc = (UnregisterFunc1Proc)GetProcAddress(hCoreDll,_T( "UnregisterFunc1 "));
	BOOL bRes = RegisterHotKey(m_hWnd, VK_TACTION,NULL,VK_TACTION); 


在Windows Mobile Smartphone平台下,VK_TSOFT1,VK_TSOFT2等都被系统注册为热键,如果在自己的应用在需要响应这些按键事件,需要先从系统中注销,然后注册后对WM_HOTKEY事件进行响应即可。但是注销系统热键的API函数并没有公开,需要使用一个coredll.dll中一个未公开API 函数.

注册消息映射:
ON_MESSAGE(WM_HOTKEY,&CMyllecSMS2Dlg::OnHotKey) 

HRESULT CMyllecSMS2Dlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{
	int idHotKey = (int)wParam;  
	UINT fuModifiers = (UINT)LOWORD(lParam);  
	UINT uVirtKey = (UINT)HIWORD(lParam);
	static BOOL bPressed = FALSE;
	if   (idHotKey == VK_TACTION)
	{
		HTREEITEM selectedItem = m_mainTree.GetSelectedItem();
		SelectedTreeNodeDoubleClick(selectedItem);
	}
	else
	{
		
	} 
	return TRUE;
}


另外在解决该问题时看到一些朋友发帖问如何在自己的应用中响应一些系统热键如VK_LEFT,VK_RIGHT等的KEY_DOWN事件,增加自己的处理过程,该问题有两种解法
1。向上面那样注册成热键,然后根据按键状态模拟出按键按下事件
2。利用GPAI的GXOpenInput,将所有的按键事件纳入掌控中

大家可通过下面的视图查看,键对应的Key值

// the phone keypad maps to VK_* as shown below.
// some keys might not be present, e.g. VK_TFLIP
    sofkey1     softkey2    VK_TSOFT1, VK_TSOFT2
            ^               VK_TUP
        <   +   >           VK_TLEFT, VK_TACTION, VK_TRIGHT
            v               VK_TDOWN
    home        back        VK_THOME, VK_TBACK
    talk        end         VK_TTALK, VK_TEND
    1       2       3       VK_T0..VK_T9
    4       5       6       ...
    7       8       9       ...
    *       0       #       VK_TSTAR, VK_TPOUND
// other buttons include
    VK_TRECORD
    VK_TPOWER, VK_TVOLUMEUP, VK_TVOLUMEDOWN
    VK_TFLIP
分享到:
评论

相关推荐

    《windows mobile 手机应用开发》源码

    第1章 无范例 &lt;br&gt;第2章 hello:用EVC生成Windows Mobile项目。 &lt;br&gt;第3章 SIP:显示和隐藏软输入面板 STPasswordManagerDemo:STPasswordManager库的使用范例 CSTUtilDemo:CSTUtil库的使用...

    WIFI手机实现的PPT翻页器——程序和源代码(C#和Python 两种实现方式)

     WIFI手机PPT翻页器的原理很简单:手机上的客户端通过无线网络向PC上的服务端发送翻页命令,PC上的服务器程序根据命令,在当前正在播放的 PPT幻灯片上模拟键盘操作。 软件运行环境: PC端:Windows XP/2003/...

    安卓课程设计-手机通讯录系统全解.doc

    7 3.1.5 还原与备份功能 7 3.2 系统界面设计 8 4 系统编码实现 14 前 言 随着移动通信与Internet向移动终端的普及,网络和用户对移动终端的要求越来越高 ,而Symbian,Windows Mobile,PalmOS等手机平台过于封闭,不...

    最新的opera官方中文正式版

    BeOS、OS/2、QNX等,此外,Opera还有手机用的版本,如在Windows Mobile和Android手机上安装的Opera Mobile和在JAVA上的Opera Mini,早在2006年更与Nintendo签下合约,提供NDS及Wii游乐器Opera浏览器软件;...

    建议大家换个浏览器opera世界最好没有其2

     Opera支持多种操作系统,如Windows、Linux、Mac、FreeBSD、Solaris、BeOS、OS/2、QNX等,此外,Opera还有手机用的版本,如在Windows Mobile上的Opera Mobile和在JAVA上的Opera Mini,早在2006年更与Nintendo签下...

    天语W806大黄蜂云OS实现USB连接豌豆荚及获取ROOT权限详细教程

    ①:实现连接豌豆荚 手机关机后,按音量上键+开机键,显示绿屏后松手(进入AP模式),松手后会变黑屏。 然后插入USB线,此时PC端会弹出安装驱动,解开nvflash.rar 压缩包找到驱动...此时按电脑键盘任意键手机重启。

    RABSoft远程服务平台

    主控端采用Ajax技术进行通讯,是同类软件中唯一不需要安装插件或软件的,也正因为这样,无论是电脑、手机(WAP版 Mobile版)还是游戏机(如PSP),你都可以用它来控制你的计算机,真正实现无论你身在何处,都能轻松...

    新版Android开发教程.rar

    谷歌早在 2002 年就进入了移动领域,可是由于目前的手机操作系统企业和手机企业相对封闭,提高了 行业的进入门槛,移动互联网的发展远没有拥有统一标准的传统互联网发展迅速,此次推出的开源手机操 作 系统平台就是...

    C#源码大集合 02(共3卷)

    │ │ └─第四十讲 开发一个简单的Mobile应用程序 │ ├─第07部分 多线程 │ │ ├─第42讲 一个简单的多线程实例 │ │ ├─第43讲 播放声音 │ │ └─第四十五讲 反射 │ ├─第08部分XML │ │ ├─第48讲 XML...

    C#源码大集合 01(共3卷)

    C#源码大集合 01(共3卷) &lt;br&gt;之前分为四个包,后两个包上传不了,对于已经下载的朋友表示赚意,现在重新再发一次(改为3卷) &lt;br&gt; ├─C#源码第一部分 │ ├─第1章 控件操作 │ │ ├─实例1 如何...

    C#源码大集合 03(共3卷)

    C#源码大集合 03(共3卷) &lt;br&gt;之前分为四个包,后两个包上传不了,对于已经下载的朋友表示赚意,现在重新再发一次(改为3卷) &lt;br&gt; ├─C#源码第一部分 │ ├─第1章 控件操作 │ │ ├─实例1 如何...

Global site tag (gtag.js) - Google Analytics