WINCE系统启动直接运行自己的程序

1.         假定 Windows CE.NET 目标工程目录为 D:\WINCE420\PUBLIC\MyWinCE ,并且工程已经 Build 成功,假定 Windows CE.NET 的应用程序为 MyApp.exe
2.        
MyApp.exe 复制到 D:\WINCE420\PUBLIC\MyWinCE\ SAMSUNG_SMDK2410_ARMV4Release 目录下;
3.        
修改 MyWinCE 工程的 project.bib 文件,在 FILES Section 添加如下内容:
MyApp.exe $(_FLATRELEASEDIR)\MyApp.exe NK H
4.        
创建快捷方式文件 MyApp.lnk ,文件内容如下:
10#\Windows\MyApp.exe
MyApp.lnk
文件也放入 D:\WINCE420\PUBLIC\MyWinCE\ SAMSUNG_SMDK2410_ARMV4Release 目录下;
5.        
修改 MyWinCE 工程的 project.bib 文件,在 FILES Section 添加如下内容:
MyApp.lnk $(_FLATRELEASEDIR)\MyApp.lnk NK H
6.        
修改 MyWinCE 工程的 project.dat 文件,添加如下内容:
Directory("\Windows\Startup"):-File("MyApp.lnk","\Windows\MyApp.lnk")
7.        
修改 MyWinCE 工程的 platform.bib 文件,在 FILES Section 添加如下内容:
MyApp.exe                 $(_FLATRELEASEDIR)\MyApp.exe                                 NK         H
MyApp.lnk                 $(_FLATRELEASEDIR)\MyApp.lnk                                 NK         H
8.         Platform Builder IDE
:【 Build -> Make Image 】(记得千万不要 Build 或者 Rebuild
9.        
成功后,得到的 NK.bin (或 NK.nb0 )就包含了应用程序 MyApp.exe MyApp.lnk ,当把相应的内核烧入开发板 MyApp 程序就会在系统启动时自动运行。
     虽然MyApp可以自己启动了,但每次启动的时候,总是微软的桌面先出来,再启动我们的程序,感觉还是不伦不类。 对此,我们可以使用 startup 的快捷方式再加上隐藏任务栏的方法,效果非常的好,具体操作是: 1)         首先新建工程,把你的应用程序放到内核里面去(前面介绍了如何做);
2)        
编译平台;
3)        
修改 shell.reg 的文件:在文件中有这样一行:
[HKEY_LOCAL_MACHINE\init]
"Launch50"="explorer.exe"
"Depend50"=hex:14,00, 1e,00
把这个 explorer.exe 改成你的应用程序(比如: MyApp.exe )就可以了;
4)         Platform Builder IDE
:【 Build -> Make Image 】(记得千万不要 Build 或者 Rebuild
5)        
成功后,得到的 NK.bin (或 NK.nb0 )就包含了应用程序 MyApp.exe MyApp.lnk ,当把相应的内核烧入开发板 MyApp 程序就会在系统启动时自动运行。


增加一篇参考文章:
其实让一个程序在wince里启动和windows里差不多,直接设置其为启动项,这个有几个方法。一个就是制作一个快捷方式,指向我们的应用程序如app.exe,然后将快捷方式放到\windows\startup下面。
    
步骤如下:(假设app.exe已经拷贝到windows下面)
     1
pb中创建一个文件,文件类型选txt,然后命名为.lnk后缀,假设名字为test.lnk
     2
编辑其内容为: 16#\windows\app.exe。备注:前面的16# 后面所有字符的总和,包括空格。Wince的帮助文档上说这么定义就行,但是我尝试后,最后down到目标机上面时提示找不到文件,在wince里查看这么创建的test.lnk的属性,发现其指向\windows\app.exe后面还有两个方框,因此不对,我的解决方法是修改test.lnk的内容为16#"\Windows\app.exe"
     3
编辑好lnk文件内容后在pb中修改project.bib。在files段后面添加下面一行:(和添加别的文件到image中类似,见我的《WinCE中如何向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目录。


你可能感兴趣的:(职场,WinCE,自启动,休闲,系统启动)