嵌入式爱好者

查看: 9021|回复: 0

[技术分享] Win CE创建快捷方式

[复制链接]

0

主题

0

帖子

0

积分

扫一扫,手机访问本帖
发表于 2013-10-11 14:56:32 | 显示全部楼层 |阅读模式
Win CE创建快捷方式
将可执行程序MyApp.exe放入SMDK6410/FILES中,在桌面创建其快捷方式:
(1) 创建KinglyApp.lnk 快捷方式文件
        使用桌面Windows 自带的记事本创建,保存时将后缀名改为lnk即可。.lnk 文件其实是一个文本文件,它包含用于链接目标的命令行以及命令行的长度,用于指向该快捷方式对应的应用程序存放的路径(建立起应用程序与其快捷方式之间的对应关系),其格式为   “<length>#<command line>”,其中length #后所有字符的个数,因此,KinglyApp.lnk的内容如下:
        22#\KinglyFlash\MyApp.exe
        注意:当把KinglyApp.lnk 后缀改为.lnk 后,使用记事本一般就无法打开了。
        把这个文件放入smdk6410\FILES 目录中
(2) 把快捷方式添加到内核中
         打开project.bib 文件,添加如下内容:
         KinglyJetApp.lnk     $(_FLATRELEASEDIR)\KinglyApp.lnk                NK U
        MyApp.exe     $(_FLATRELEASEDIR)\MyApp.exe                NK U
        这样,执行SYSGEN 的时候会KinglyJetApp.lnk加入到内核中,最后会存在于开发板的\Windows 目录中
        注意:KinglyJetApp.lnk是生成的\Windows 目录下的快捷方式名,而KinglyApp.lnk则是第一步中建立的lnk文件名,否则会编译错误,当然,两个文件名也可以是一样的。
(3) 把快捷方式添加到桌面
        打开project.dat,加入以下内容:
        Directory("\Windows\LOC_DESKTOP_DIR"):-File("Kingly测试.lnk","\Windows\KinglyJetApp.lnk")
        这将会在桌面出现名称为“Kingly测试”的快捷方式,它是KinglyJetApp.lnk的一个
拷贝,其内容和KinglyJetApp.lnk是一样的。
(4) 最后执行菜单Builder -Sysgen,生成NK.bin NK.nb0
        把它们烧写或者下载到开发板启动后,就会在桌面看到“Kingly测试”快捷方式了。
++++++++++++++++++++++++++++++++++++
winCE系统启动时自动运行应用程序或放在桌面--已验证
一、快捷方式   
   
假定Windows   CE.NET目标工程为CEPC类型,目录为E:\Project\MyWinCE
并且工程已经Build(或者Rebuild)成功;   
   
假定WindowsCE.NET的应用为"MyApp.exe"   
   
   
1.MyApp.exe复制到E:\PROJECTS\MyWinCE\RelDir\SAMSUNG_SMDK2440_ARMV4IRelease目录下;   
   
   
2.修改MyWinCE工程的project.bib文件,在FILES添加
     
MyApp.exe         $(_FLATRELEASEDIR)\MyApp.exe           NK           H   
   
   
3.创建快捷方式文件MyApp.lnk(先建文本文件,写入内容后再改扩展名为.lnk),文件内容如下(就一行字符):   
   
10#\Windows\MyApp.exe

MyApp.lnk文件也放入E:\PROJECTS\MyWinCE\RelDir\SAMSUNG_SMDK2440_ARMV4IRelease目录下
   
4.修改MyWinCE工程的project.bib文件,在FILES添加   
   
MyApp.lnk           $(_FLATRELEASEDIR)\MyApp.lnk             NK           H
   
   
5.修改MyWinCE工程的project.dat文件,添加如下内容:   
   
Directory("\Windows\Startup"):-File("MyApp.lnk","\Windows\MyApp.lnk")   
   
   
6.Platform   Builder   IDE->菜单Build->MakeImage(记得千万不要Build或者Rebuild
否则你就要重新来一遍)
     
到此得到的NK.bin就包含了应用程序MyApp.exeMyApp.lnk
并且MyApp程序会在系统启动时自动运行。  
   
WINCE 建立快捷方式、内核添加文件(转)
1.WINCE快捷方式结构
    WINCE的快捷方式和WIN2K,XP的不同,只是一个后缀名为.LNK的文本文件.
    其格式如下: 数字#路径
    比如,有个快捷方式写法如下:23#\Windows\ToolViewer.exe
    指的是指向WINDOWS文件夹下的Toolviewer.exe可执行文件.数字究竟代表的是什么意思,我也不太清楚;有一说法是#后的ACSII字符 的数量,但如果把上述例子改为1#\Windows\ToolViewer.exe也可正常运行,但去掉数字则系统无法识别.虽然可以正常使用,但建议还 是按照文档#之后的ACSII字符数量填写.
  
2.如何把快捷方式加到内核中
    假设我们有一快捷方式EnglishExp.lnk,要将其加到内核中.
    在PB环境中打开工程,project.bib文件的FILES字段中添加:
    EnglishExp.lnk     $(_WINCEROOT)\PLATFORM\MyAPPC\EnglishExp.lnk      NK H
    其中 $(_WINCEROOT)指的是PC机子上PB安装的根目录,H指的是文件属性,意义代表如下:
    S:系统
    H:隐藏
    R:压缩的资源文件
    C:压缩文件
    U:非压缩文件
  
3.如何把快捷方式放到桌面
    语法如下: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文件中找到
  
4.消除快捷方式的小箭头
    在PC机的操作系统中可以通过修改注册表来取消快捷方式左下角的小箭头,但在WINCE中注册表没有关于取消小箭头的键值(可能我没找到^_^).在这里我采用的是直接修改资源文件的做法.
    打开shcore.res文件,其中文的路径在 $(_WINCEROOT)\PUBLIC\COMMON\OAK\LIB\ARMV4I\RETAIL\0804\,然后将1205ICO的小箭头删 掉即可.注意,不是删除ID1205ICO图标,是删除ICO图标中的内容.
  
5.微软应用程序的快捷方式
    如果在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
6. 修改默认shell
   其实让一个程序在wince里启动和windows里差不多,直接设置其为启动项,这个有几个方法。一个就是制作一个快捷方式,指向我们的应用程序如app.exe,然后将快捷方式放到\windows\startup下面。     
   步骤如下:(假设app.exe已经拷贝到windows下面)     
   在pb中创建一个文件,文件类型选txt,然后命名为.lnk后缀,假设名字为test.lnk     
     编辑其内容为:    16#\windows\app.exe     
     备注:前面的16#    后面所有字符的总和,包括空格。Wince的帮助文档上说这么定义就行,但是我尝试后,最后down到目标机上面时提示找不到文件,在wince里查看这 么创建的test.lnk的属性,发现其指向\windows\app.exe后面还有两个方框,因此不对,我的解决方法是修改test.lnk的内容为 16#"\Windows\app.exe"     
   编辑好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目录。     
   总之,今天是把定制shell算是基本完成了。   
1.让桌面不显示"我的电脑","回收站"
   删除以下键值:
   [HKEY_LOCAL_MACHINE\Explorer\Desktop]
   {000214A0-0000-0000-C000-000000000046} ;"My Computer"
   {000214A1-0000-0000-C000-000000000046} ;Recycle Bin"
   存在这两个键值的文件有:
   $(_WINCEROOT)\PUBLIC\SHELL\OAK\FILES\shell.reg
   $(_WINCEROOT)\PUBLIC\WCESHELLFE\OAK\FILES\wceshellfe.reg
   $(_WINCEROOT)\PUBLIC\WCESHELLFE\OAK\FILES\wceshellfe88.reg

2.直接删除文件,不放回回收站
   [HKEY_LOCAL_MACHINE\Explorer]
   "UseRecycleBin"=dword:0 ;设置0为直接删除;设置1为放入回收站
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-12-27 22:43

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表