WinCE快捷方式浅析

WinCE快捷方式浅析


一、 WINCE 快捷方式结构

 

WINCE 的快捷方式和 WIN2K,XP 的不同 , 只是一个后缀名为 .LNK 的文本文件 .

其格式如下 :

数字 # 路径

比如 , 有个快捷方式写法如下 :

23#/Windows/ToolViewer.exe

指的是指向 WINDOWS 文件夹下的 Toolviewer.exe 可执行文件 . 数字究竟代表的是什么意思 , 我也不太清楚 ; 有一说法是 # 后的 ACSII 字符 的数量 , 但如果把上述例子改为 1#/Windows/ToolViewer.exe 也可正常运行 , 但去掉数字则系统无法识别 . 虽然可以正常使用 , 但建议还 是按照文档 # 之后的 ACSII 字符数量填写 .

 

二、 . 如何把快捷方式加到内核中

假设我们有一快捷方式 EnglishExp.lnk, 要将其加到内核中 .

PB 环境中打开工程 ,project.bib 文件的 FILES 字段中添加 :

 

EnglishExp.lnk $(_WINCEROOT)/PLATFORM/MyAPPC/EnglishExp.lnk NK H

 

其中 $(_WINCEROOT) 指的是 PC 机子上 PB 安装的根目录 ,H 指的是文件属性 , 意义代表如下 :

S: 系统

H: 隐藏

R: 压缩的资源文件

C: 压缩文件

U: 非压缩文件

 

三、 . 如何把快捷方式放到桌面

语法如下 :Directory( ”欲拷贝至的文件夹” ):-File( ”更改的名称” , ”要拷贝的文件” )

假设我们有一快捷方式 EnglishExp.lnk, 要将其放到桌面 , 并把快捷方式的名称改为”英语”

PBproject.dat 文件加入此句 :

 

Directory(/Windows/LOC_DESKTOP_DIR):-File( ”英语 .lnk,/Windows/CEnglishExp.lnk)

 

包含在内核里面的文件全部释放到” /Windows ”文件夹下 .

 

LOC_DESKTOP_DIR 指的是本地桌面 .PB, 常用的还有如下宏定义 :

LOC_DESKTOP_DIR: 桌面

LOC_MYDOCUMENTS_DIR: My Documents

LOC_PROGRAMFILES_DIR: Program Files

LOC_FAVORITES_DIR: Favorites

LOC_RECENT_DIR: Recent

LOC_MYDOCUMENTS_DIR: My Documents

LOC_HELP_DIR: Help

 

 

更多的定义可以在 ceshellfe.str 文件中找到

 

四、消除快捷方式的小箭头

PC 机的操作系统中可以通过修改注册表来取消快捷方式左下角的小箭头 , 但在 WINCE 中注册表没有关于取消小箭头的键值 ( 可能我没找到 ^_^). 在这里我采用的是直接修改资源文件的做法 . 打开 shcore.res 文件 , 其中文的路径在 $(_WINCEROOT)/PUBLIC/COMMON/OAK/LIB/ARMV4I/RETAIL/0804/, 然后将 1205ICO 的小箭头删 掉即可 . 注意 , 不是删除 ID1205ICO 图标 , 是删除 ICO 图标中的内容 .

 

五、微软应用程序的快捷方式

如果在 PB 中添加了微软的应用软件 , 便会在桌面和程序中添加其快捷方式 ; 如果觉得快捷方式碍眼 , 可以将其注释掉再编译即可 .

现在列出一些 dat 文件中定义的微软应用软件的快捷方式 :

 

wceappsfe.dat (C:/WINCE420/PUBLIC/WCEAPPSFE/OAK/FILES/), 内含 :pmail,wordpad

wceshellfe.dat (C:/WINCE420/PUBLIC/WCESHELLFE/OAK/FILES/), 内含 :iexplore, 帮助文档在” help ”文件夹的快捷方式

viewers.dat (C:/WINCE420/PUBLIC/VIEWERS/OAK/FILES/), 内含 :pdfviewer,imageviewer,Presviewer,Docviewer

directx.dat (C:/WINCE420/PUBLIC/DIRECTX/OAK/FILES/), 内含 :Media Player,DVD Player

 

六、修改默认 shell

其实让一个程序在 wince 里启动和 windows 里差不多,直接设置其为启动项,这个有几个方法。一个就是制作一个快捷方式,指向我们的应用程序如 app.exe ,然后将快捷方式放到 /windows/startup 下面。

 

步骤如下:(假设 app.exe 已经拷贝到 windows 下面)

1 、在 pb 中创建一个文件,文件类型选 txt ,然后命名为 .lnk 后缀,假设名字为 test.lnk

编辑其内容为 : 16#/windows/app.exe

备注:前面的 16# 后面所有字符的总和,包括空格。 Wince 的帮助文档上说这么定义就行,但是我尝试后,最后 down 到目标机上面时提示找不到文件,在 wince 里查看这 么创建的 test.lnk 的属性,发现其指向 /windows/app.exe 后面还有两个方框,因此不对,我的解决方法是修改 test.lnk 的内容为 16#/Windows/app.exe

2 、编辑好 lnk 文件内容后在 pb 中修改 project.bib

files 段后面添加下面一行: ( 和添加别的文件到 image 中类似,也要在 pbflatform 菜单的 setting 下添加 build 语句,同上,不再赘述 )

test.lnk $(_FLATRELEASEDIR)/test.lnk NK S

project.dat

增加下面一行:

Directory(”/Windows/startup”):-File(”test.lnk”,”/Windows/test.lnk”)

这样后系统启动后就会自动启动我们的程序了。

 

另外一种方法是编辑注册表:在 project.reg 中添加如下内容

 

 

[HKEY_LOCAL_MACHINE/init]

Launch80=app.exe

Depend80=hex:14,00,1e,00

这个是设定启动顺序, launch 后面的数字越大的越是后启动, Depend80 后面的指定依赖项,为 16 进制,上面的语句表明依赖项为 launch20 定义的 device.exelaunch30 中定义的 gwes.exe 注意 Launch 后面的数字范围为 099 ,此范围之外的将不会有效果。

这样两种方法的效果都是系统都是系统先启动资源管理器 explorer.exe (就是看到的默认桌面),然后启动我们的程序,(如果利用 taskman shell 然后去掉任务栏那么效果更好)但是这样还不够,我们如何不显示桌面,直接显示我们的程序呢?

网上有人介绍的方法是去掉 standard shell ,但是我编译总是报错。我采用的方法是替换注册表中 lauch50 中的 explorer.exe 为我的 app.exe ,即搞定。

修改注册表的方法:先把带 KITL 的系统跑起来,在 PBTOOLS->Remote registry editor 里修改 , 验证有效后 , 再去修改 platfrom.reg, 或者自己写个 REG 文件,然后在 platform.regINCLUDE 进来 SYSGEN 后确认 PBWORKSPACE 里相关项目的 REL 目录里 reginit.ini 文件里包含了自己做的修改后 make image 然后 DOWNLOAD 下去就 OK 了。

值得补充的是,我们前面介绍的步骤中那个修改平台 setting ,添加语句的,是因为我每次都是重新 sysgenbuild ,如果只是简单的 make image 的话(都是 pb 中的 build OS 菜单下的命令),那么将直接用 release 中的内容,因此也可以直接将文件放到 release 文件夹,然后改 project.bib 等实现往 image 中添加文件。 同样,也可以直接修改 release 中的 shell.reg 中的 launch50 值为我们自己的程序(或者类似修改 reginit.ini 文件, reginit.ini 文件存放有所有 wince 的静态注册表,来达到去掉桌面,直接启动我们程序的效果)。

注意,这么启动的程序,如果点击关闭,就会死机的,因为没有窗口运行了。实际运用中,当然不会让用户关闭我们的程序,除非他一起关闭系统。

如果也需要 build 的话,可以通过往 image 中添加文件的方法将我们改好的 shell.reg 添加到 release 目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JXES智能生态系统

如文章对你有用,请作者喝个咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值