设备Lock的两种方式


在闲置手机的时候,有时需要确保其不会被以其他方式误操作,否则误点了无数的订阅服务,那你可要自己掏腰包缴费啦。
下面介绍两种方式的来确保设备不会被误操作。

1. keybd_event方式
原型:

VOID keybd_event( BYTE bVk, BYTE bScan, DWORD dwFlags, DWORD dwExtraInfo );

该函数模拟一次键盘行为。 
每次操作都调用2keybd_event(如果是组合键,如shift+A,就是2n次)来完成一次模拟操作!
第一次是按下键,只需传递一个键值和一个非KEYEVENTF_KEYUP的状态(一般是KEYEVENTF_KEYDOWN)
第二次是传递该键值和KEYEVENTF_KEYUP标志,表示松开按键。
这里还有一个常用的状态标志是使用KEYEVENTF_SILENT0x4)标志,表示模拟击键而不产生常规按键时敲击的“嘟”声音。
参考:黄季冬《再谈Windows Mobile上的模拟按键操作》

keybd_event Lock

 


2. SHDeviceLockAndPrompt 方式
参考: http://msdn.microsoft.com/en-us/library/bb160713.aspx

HRESULT SHDeviceLockAndPrompt();

该函数只有在WM6 Classic, ProfessinalStandard 版本及其以后的版本才可以使用。
该函数返回一个HRESULT值,其实就是一个int值。如果Lock成功,返回S_OK(值为0);返回其他值表示失败!
注意:
1. 即使返回0,也不能确保设备被用户成功的UnlockLock,只能说明UnlockLock的进程被启动了。
2. 该函数是特权函数,因此如果要想发布拥有该函数的版本就一定要购买MS的特权签名。
3. 在调用该函数时,需要在:Start - Settings - Personal - Lock - Password 选中"Prompt if device unused for ",设置启动时间和密码;否则你会发现调用该函数并没有什么反映,如果你设置了"Owner Information",那么最多就是显示你的个人信息,并不会锁定!

 

        [DllImport("Aygshell.dll")]
        
public static extern int SHDeviceLockAndPrompt();

 

__________
截图: 测试环境 Sony Ericsson X1(WM6.1)


前三张图片为keybd_event方式调用的Lock,图一为程序初始界面,图二为已经调用Lock,图三为点击完图二的Unlock后进入的界面。
图四为调用SHDeviceLockAndPrompt函数进入的界面,需要输入密码,不过事先要按照第三点注意进行设置


__________
源代码下载:
DeviceLockAndPrompt.rar


 
 
 
 

--------------------------------------------------

李森 – listen
E-mail:  lisencool@gmail.com

声明:
这里集中了在WinCEWindows Mobile开发中的一些基本常识。我很乐意和大家分享,也希望大家提出意见,并给我投稿,我会第一时间替您发表并署上您的大名!

Announce:
Here collects general knowledge on WinCE and Windows mobile. I 'm very glad to share them with all friends, and also hope you can share your problems and opinions and contribute articles to me to share with others. I'll publish your articles and sign your name at the first time.

  

 

 

 

posted on 2009-09-21 10:30  listenlisten  阅读(948)  评论(2编辑  收藏  举报

导航