如何让我的程序不被WM那些键关闭?(问题解决后另开百分帖相送)

OenAuth.Core 2009-01-04 11:06:33
先说环境:
多普达P800+WM6.0+C#

问题:程序界面已经是最大化显示,所以窗体没有关闭按钮。
可手机上面有很多如“WINDOWS开始”“IE”这些键,我调试了一下,这些键响应"Deactivate()"事件,当前程序失去焦点,系统打开别的程序去了
更可恶的是还有个"OK"键,按下它后,直接关闭程序。


请问如何让
“WINDOWS开始”“IE”这样的键不打开它们的程序,一直让我的程序有焦点。
"OK"键不关闭我的程序?
本块级别有限,问题解决另开百分帖相送


VC/MFC的话,我可以截这些消息,可C#的WINFORM不会~~~~~
...全文
163 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yonghengwwh 2010-02-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 anglecloudy 的回复:]
先说环境:
多普达P800+WM6.0+C#

问题:程序界面已经是最大化显示,所以窗体没有关闭按钮。
可手机上面有很多如“WINDOWS开始”“IE”这些键,我调试了一下,这些键响应"Deactivate()"事件,当前程序失去焦点,系统打开别的程序去了
更可恶的是还有个"OK"键,按下它后,直接关闭程序。


5.0的在6.0里面能用不
我也在做这个东西。用的是HTC HD2 的手机,windows mobile 6.5的操作系统
做了钩子,钩不住,不起作用

if (hookStruct.vkCode == 91 || hookStruct.vkCode == 237 || hookStruct.vkCode == 114 || hookStruct.vkCode == 117 || hookStruct.vkCode == 92)
{
MessageBox.Show(hookStruct.vkCode.ToString());

return (IntPtr)(-1);
}
是不是这样写

88csdn 2009-01-05
  • 打赏
  • 举报
回复
def中的函数在C#中调用一下就是了:
        [DllImport("cellcore.dll", EntryPoint = "ConnMgrEstablishConnection", SetLastError = true)]
internal static extern int ConnMgrEstablishConnection(ref CONNMGR_CONNECTIONINFO pConnInfo, ref IntPtr phConnection);

[Quote=引用 7 楼 anglecloudy 的回复:]
等一下,我已经用MFC写好了一个DLL,正在想怎么用C#调用呢,郁闷~~~讨厌c#
成功后结帖
[/Quote]
comiunknown 2009-01-04
  • 打赏
  • 举报
回复
确定只针对多普达P800的话,可以用全局键盘钩子钩“WINDOWS开始”“IE”,“OK”这些键,“WINDOWS开始”键的ID是VK_THOME,“OK”键的ID是VK_DONE,“IE”键的ID可能是VK_TSOFT2,你可以到C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Include\Armv4i\winuserm.h下找到所有硬件按键的ID定义。
儿大不由爷 2009-01-04
  • 打赏
  • 举报
回复
“WINDOWS开始”“IE”这些键最好就不要屏蔽了,那不成了流氓软件了,OK到是可以屏蔽的
OenAuth.Core 2009-01-04
  • 打赏
  • 举报
回复
等一下,我已经用MFC写好了一个DLL,正在想怎么用C#调用呢,郁闷~~~讨厌c#
成功后结帖
derfson2006 2009-01-04
  • 打赏
  • 举报
回复
用RegisterHotKey这个API,相关具体用法,CSDN上很多介绍
comiunknown 2009-01-04
  • 打赏
  • 举报
回复
c#你要自己添加VK_THOME,VK_DONE的定义:

const uint VK_THOME = 0x58;
const uint VK_DONE = 0x75;
OenAuth.Core 2009-01-04
  • 打赏
  • 举报
回复
我试了,在C#中没有VK_THOME VK_DONE这些值,郁闷。··~~~~
OenAuth.Core 2009-01-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 comiunknown 的回复:]
确定只针对多普达P800的话,可以用全局键盘钩子钩“WINDOWS开始”“IE”,“OK”这些键,“WINDOWS开始”键的ID是VK_THOME,“OK”键的ID是VK_DONE,“IE”键的ID可能是VK_TSOFT2,你可以到C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Include\Armv4i\winuserm.h下找到所有硬件按键的ID定义。
[/Quote]

谢了,先试试,没问题的话,结帖加分
也希望楼下能给出别的方法
ppc_2008 2009-01-04
  • 打赏
  • 举报
回复
楼上的方法不错

7,657

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧