1、WINCE 的快捷方式1.WINCE快捷方式结构WINCE的快捷方式和 WIN2K,XP的不同,只是一个后缀名为.LNK 的文本文件.其格式如下:数字#路径比如,有个快捷方式写法如下:23#WindowsToolViewer.exe指的是指向 WINDOWS文件夹下的 Toolviewer.exe可执行文件.数字究竟代表的是什么意思,我也不太清楚;有一说法是#后的 ACSII字符 的数量,但如果把上述例子改为 1#WindowsToolViewer.exe也可正常运行,但去掉数字则系统无法识别.虽然可以正常使用,但建议还 是按照文档#之后的 ACSII字符数量填写.2.如何把快捷方式加到内核中
2、假设我们有一快捷方式 EnglishExp.lnk,要将其加到内核中.在 PB环境中打开工程,在 project.bib文件的 FILES字段中添加:EnglishExp.lnk $(_WINCEROOT)PLATFORMMyAPPCEnglishExp.lnk NK H其中 $(_WINCEROOT)指的是 PC机子上 PB安装的根目录,H 指的是文件属性,意义代表如下:S:系统H:隐藏R:压缩的资源文件C:压缩文件U:非压缩文件3.如何把快捷方式放到桌面语法如下:Directory(”欲拷贝至的文件夹”):-File(”更改的名称”,”要拷贝的文件”)假设我们有一快捷方式 EnglishE
3、xp.lnk,要将其放到桌面,并把快捷方式的名称改为”英语”在 PB的 project.dat文件加入此句:Directory(”WindowsLOC_DESKTOP_DIR”):-File(”英语.lnk”,”WindowsCEnglishExp.lnk”)包含在内核里面的文件全部释放到”Windows”文件夹下.LOC_DESKTOP_DIR指的是本地桌面.在 PB中,常用的还有如下宏定义:LOC_DESKTOP_DIR: 桌面LOC_MYDOCUMENTS_DIR: My DocumentsLOC_PROGRAMFILES_DIR: Program FilesLOC_FAVORITES_
4、DIR: FavoritesLOC_RECENT_DIR: RecentLOC_MYDOCUMENTS_DIR: My DocumentsLOC_HELP_DIR: Help更多的定义可以在 ceshellfe.str文件中找到4.消除快捷方式的小箭头在 PC机的操作系统中可以通过修改注册表来取消快捷方式左下角的小箭头,但在 WINCE中注册表没有关于取消小箭头的键值(可能我没找到_).在这里我采用的是直接修改资源文件的做法.打开 shcore.res文件,其中文的路径在 $(_WINCEROOT)PUBLICCOMMONOAKLIBARMV4IRETAIL0804,然后将 1205的 ICO
5、的小箭头删 掉即可.注意,不是删除 ID为 1205的 ICO图标,是删除 ICO图标中的内容.5.微软应用程序的快捷方式如果在 PB中添加了微软的应用软件,便会在桌面和程序中添加其快捷方式;如果觉得快捷方式碍眼,可以将其注释掉再编译即可.现在列出一些 dat文件中定义的微软应用软件的快捷方式:wceappsfe.dat (C:WINCE420PUBLICWCEAPPSFEOAKFILES),内含:pmail,wordpadwceshellfe.dat (C:WINCE420PUBLICWCESHELLFEOAKFILES),内含:iexplore,帮助文档在”help”文件夹的快捷方式vie
6、wers.dat (C:WINCE420PUBLICVIEWERSOAKFILES), 内含:pdfviewer,imageviewer,Presviewer,Docviewerdirectx.dat (C:WINCE420PUBLICDIRECTXOAKFILES),内含:Media Player,DVD Player6. 修改默认 shell其实让一个程序在 wince里启动和 windows里差不多,直接设置其为启动项,这个有几个方法。一个就是制作一个快捷方式,指向我们的应用程序如app.exe,然后将快捷方式放到windowsstartup 下面。步骤如下:(假设 app.exe已经拷
7、贝到 windows下面)在 pb中创建一个文件,文件类型选 txt,然后命名为.lnk 后缀,假设名字为test.lnk编辑其内容为: 16#windowsapp.exe备注:前面的 16是# 后面所有字符的总和,包括空格。Wince 的帮助文档上说这么定义就行,但是我尝试后,最后 down到目标机上面时提示找不到文件,在wince里查看这 么创建的 test.lnk的属性,发现其指向windowsapp.exe 后面还有两个方框,因此不对,我的解决方法是修改 test.lnk的内容为 16#”Windowsapp.exe”编辑好 lnk文件内容后在 pb中修改 project.bib在 f
8、iles段后面添加下面一行:(和添加别的文件到 image中类似,也要在 pb的 flatform菜单的 setting下添加 build语句,同上,不再赘述)test.lnk $(_FLATRELEASEDIR)test.lnk NK Sproject.dat增加下面一行:Directory(”Windowsstartup”):-File(”test.lnk”,”Windowstest.lnk”)这样后系统启动后就会自动启动我们的程序了。另外一种方法是编辑注册表:在 project.reg中添加如下内容HKEY_LOCAL_MACHINEinit“Launch80=”app.exe”“Dep
9、end80=hex:14,00,1e,00这个是设定启动顺序,launch 后面的数字越大的越是后启动,Depend80 后面的指定依赖项,为 16进制,上面的语句表明依赖项为 launch20 定义的device.exe和 launch30中定义的 gwes.exe, 注意 Launch后面的数字范围为0到 99 ,此范围之外的将不会有效果。这样两种方法的效果都是系统都是系统先启动资源管理器 explorer.exe(就是看到的默认桌面),然后启动我们的程序,(如果利用 taskman shell然后去掉任务栏那么效果更好)但是这样还不够,我们如何不显示桌面,直接显示我们的程序呢?网上有人介
10、绍的方法是去掉 standard shell,但是我编译总是报错。我采用的方法是替换注册表中 lauch50中的 explorer.exe为我的 app.exe,即搞定。修改注册表的方法:先把带 KITL的系统跑起来,在 PB的 TOOLS-Remote registry editor里修改,验证有效后,再去修改 platfrom.reg, 或者自己写个REG文件,然后在 platform.reg里 INCLUDE进来 SYSGEN后确认 PBWORKSPACE里相关项目的 REL目录里 reginit.ini文件里包含了自己做的修改后 make image然后 DOWNLOAD下去就 OK了
11、。值得补充的是,我们前面介绍的步骤中那个修改平台 setting,添加语句的,是因为我每次都是重新 sysgen和 build,如果只是简单的 make image的话(都是 pb中的 build OS菜单下的命令),那么将直接用 release中的内容,因此也可以直接将文件放到 release文件夹,然后改 project.bib等实现往 image中添加文件。 同样,也可以直接修改 release中的 shell.reg中的launch50值为我们自己的程序(或者类似修改 reginit.ini文件, reginit.ini文件存放有所有 wince的静态注册表,来达到去掉桌面,直接启动我们程序的效果)。注意,这么启动的程序,如果点击关闭,就会死机的,因为没有窗口运行了。实际运用中,当然不会让用户关闭我们的程序,除非他一起关闭系统。如果也需要 build的话,可以通过往 image中添加文件的方法将我们改好的shell.reg添加到 release目录。总之,今天是把定制 shell算是基本完成了。微嵌工业一体化电脑()