逆风飞扬  
顺风也好,逆风也罢,都是驾驭风力而已,君子性非异也,善假与物也。逆风飞扬,也能飞得更高,更远!

      这几天在搞mobile5.0 for smartphone手机上的拍照问题。由于HTCCameraAPI的dll在mobile5.0下出错,我也没有找到啥原因。所以我就用微软的托管类CameraCaptureDialog来处理。但是在mobile5.0 for smartphone手机还有点小问题,就是在我拍完照片后照相机无法被关闭。CameraCaptureDialog有个属性Owner,我设置成Owner = this后,在关闭了调用相机的窗体后仍然不能关闭(有知道原因的朋友,帮忙支支招啊,先谢谢了),所以我就想通过杀进程的方法强制杀掉。
我是采用调用API的方法来处理的。处理过程如下:
首先用FindWindow函数得到窗口句柄,然后用GetWindowThreadID函数从窗口句柄得到这个进程的ID,接着用OpenProcess得到进程的句柄,最后用TerminateProcess将进程杀掉。
这个方法在ppc2003的手机sp2003的手机以及mobile5.0 for ppc手机下都没有问题。但在mobile5.0 for sp手机就有问题,问题是这样的,但我在我的程序里打开的camera.exe进程,则在OpenProcess得到进程句柄的时候没有问题,也能杀掉,但是如果是camera.exe进程不在我的程序里打开的,而是提前打开了,或者通过硬按键启动的camera.exe,则在OpenProcess的时候就得不到进程句柄,当然也无法杀掉。这个问题让我很郁闷,查了很多资料,问了很多朋友,最后将原因锁定在安全证书上面。有关安全证书的介绍我也不清楚,还要继续研究。在安装mobile5.0 sdk的时候会在mobile5.0 sdk的安装目录下有开发用的安全证书,将这个证书配置到项目属性里,结果运行程序,一切OK。
      配置证书的说明我简单说一下,过程如下:
在菜单上,项目->项目属性->选择设备->把签名的框选中->选择证书->点管理证书->选择个人,然后导入->浏览选择Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Smartphone SDK\Tools\SDKSamplePrivDeveloper.pfx 然后继续回到项目属性界面。然后选择向设备提供证书。重新编译就ok了。

posted on 2007-06-01 14:42  逆风飞扬  阅读(661)  评论(4编辑  收藏  举报