标签存档: Windows Mobile

Windows Mobile 中启动外部应用程序

Windows Mobile下面Java一直没有比较好的模拟器,用了一段时间的JMM最新版,觉得不错,但是有些程序还是不能运行,就去下了个JBed,但是在JBed中安装程序时会搜索卡,感觉比较费时,用Resco Explorer用JBed带参数打开时,又安装不了,因为需要加额外的参数-ginstall,Resco Explorer不支持。

另外一种方法就是把 .jar 文件的关联改到JBed,不过平时主要用的JMM,不想改掉关联,所以想着写个程序,作为代理,在Resco Explorer里把 .jar 文件的路径传给这个代理,再通过这个程序带参数启动 JBed 来安装。

要做到这些,就需要在这个代理中启动外部应用程序,第一次写Windows Mobile下面的程序,不过都是微软一家人,也不是麻烦,在Google上找了资料,发现可以用 ShellExecuteEx 来启动外部应用程序,然后就开写了。

程序的主要代码就一段,功能就是接受参数,启动 JBed。

wchar_t* param;
param = (wchar_t*) LocalAlloc(LPTR, 255);
wsprintf(param, _T(“-ginstall \”file:\\%s\””), lpCmdLine);
SHELLEXECUTEINFO execInfo;
ZeroMemory(&execInfo, sizeof(execInfo));
execInfo.cbSize = sizeof(execInfo);
execInfo.lpFile = _T(“\\Storage Card\\J\\jbed.exe”);
execInfo.lpParameters = param;
execInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
execInfo.lpVerb = _T(“open”);
ShellExecuteEx(&execInfo);

因为觉得用 .NET 的话,程序的启动速度太慢,所以就用了 C++ 来写。

ActiveSync 和 DHCP Client

2003莫名的挂掉了,关不了机,加上2003用的时候越来越少,Vista的兼容性有些问题,就决定重新装回XP。

装完XP,按自己的喜好设置了一番,装好ActiveSync插上数据线跟手机同步,发现同步不了,郁闷。

可以说装XP的一大目的就是为了跟手机同步,原来在2003就一直同步不了,在Vista用移动设置中心倒是能同步的。

同学的电脑上用XP是能同步的,仔细想了想我的系统跟同学的有啥不同,好像也没啥,然后再试了下,注意到屏幕右下角总是有一个网络连接的图标在获取IP,同学的电脑用时却没有。再弄了会的时候突然想到了,会不会是我优化服务时把DHCP Client服务给设置为手动了的原因,导致Windows Mobile-based Device分配不到IP,然后就一直同步不了。

想到这,马上打开服务管理器,把DHCP Client服务启动了,果然,ActiveSync响了一声,箭头开始转起来。

弄了这么久,总算解决了这个问题,在想微软是不是应该在ActiveSync的帮助或者哪里说明一下ActiveSync同步是需要 DHCP Client服务的。