windows mobile屏蔽“开始”菜单
我的程序是一个WM全屏程序,开机时自动运行。我已经屏蔽了所有的PDA按键(除电源键),即用户不能退出我的程序。但当用户关机时(长按电源按键)会弹 出 “......,是否关机”那个对话框,而这个对话框会把“开始”菜单显示出来,用户如果点开始菜单里面任何一项,他就跳出我的程序了。
我一直以为这个功能不能实现,不过某天我玩一个全屏RPG游戏时,发现我长按关机键后,再点那个“开始”没有反应,于是又想实现该功能。
怎么让用户不能点击那个开始菜单?
在MSDN的windows mobile版块: http://social.microsoft.com/Forums/zh-CN/1729/thread/3b2495d5-a4a5-43b8-9080-242e1e3514cc
在CSDN的windows mobile版块: http://topic.csdn.net/u/20090702/11/e6417a27-30fe-469e-9977-bc219d028ff5.html
我都问过该问题,而且查阅了很多中文,英文文档都找不到合适的解决方案,请园子里的牛人帮忙。
再次表示赚意。
最后,谢谢大家
改----------------------------------------------------------------------------------------------------------------------------------------------
通过CSDN上几位朋友的介绍,解决方法有以下两种:
两种解决方法:
1.如果你能截获到长按电源键消息,那么直接隐藏HHTaskBar就可以。
public extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("coredll.dll")]
public extern static bool EnableWindow(IntPtr hwnd, bool bEnable);
public static bool HideBar(bool enable)
{
IntPtr hwnd;
hwnd = FindWindow("HHTaskBar", "");
return EnableWindow(hwnd, enable);
}
public Form1()
{
InitializeComponent();
HideBar(false);
}
2.服务程序截获用户点击start那个位置的消息,直接break,就会屏蔽掉。
{
switch(nMessage)
{
case WM_LBUTTONDOWN:
MessageBox(NULL,_T("小样的,休想逃跑"),_T("温馨提示"),MB_OK);
return 0;
}
return DefWindowProc(hwnd,nMessage,wParam,lParam);
}
void CEvcDlg::OnButton1()
{
HWND hwnd = ::FindWindow(TEXT("HHTaskBar"),TEXT(""));
if(hwnd != NULL)
{
SetWindowLong(hwnd,GWL_WNDPROC,(long)WndProc);
}
}
出处:http://www.cnblogs.com/yubaolee/
开源框架:最好用的的权限工作流框架OpenAuth.Net
本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
如您有任何疑问或者授权方面的协商,请给我留言。