让程序在Windows CE系统启动时自动运行

原创 2007年10月08日 17:26:00
 
让程序在Windows CE系统启动时自动运行(方法一)
1. 假定Windows CE.NET目标工程目录为E:/ SMDK2440,并且工程已经Build成功,
假定Windows CE.NET的应用程序为MyApp.exe并存放在本地硬盘 E 盘下;
2. 修改MyWinCE工程的project.bib文件,在MODULES添加如下内容:
MyApp.exe  E/MyApp.exe  NK  H 
3. 创建快捷方式文件MyApp.lnk,文件内容如下:
10#/Windows/MyApp.exe
MyApp.lnk文件也放入E:/目录下;
4. 修改MyWinCE工程的project.bib文件,在FILES 添加如下内容:
MyApp.lnk E/MyApp.lnk  NK  H 
5. 修改MyWinCE工程的project.dat文件,添加如下内容: 
Directory("/Windows/Startup"):-File("MyApp.lnk","/Windows/MyApp.lnk") 
8. Platform Builder IDE:【Build->Make Image】(记得千万不要Build或者Rebuild
9. 成功后,得到的NK.bin(或NK.nb0)就包含了应用程序MyApp.exeMyApp.lnk,当把相应的内核烧入开发板MyApp程序就会在系统启动时自动运行。
 关于系统程序的启动顺序(自启动方法二)
采用这种方法的前提是你要启动的应用程序已经编译进了NK.nb0或者NK.bin中了。具体方法及说明如下:
platform.reg或者common.reg,在[HKEY_LOCAL_MACHINE/init]段添加如下类似内容:    
  "LaunchXX"="<
你的程序>"
  "DependXX"=hex:YY,ZZ,...
 其中XX是十进制的数字,表示<你的程序>的启动顺序标识;YY,ZZLeast   Significant的十六进制数字,表示<你的程序>所依赖(先于<你的程序>运行)的程序的启动顺序标识。
来看两个系统的例子:
[HKEY_LOCAL_MACHINE/init]
; @CESYSGEN IF CE_MODULES_SHELL
        "Launch10"="shell.exe"
; @CESYSGEN ENDIF
IF IMGTINY !
; @CESYSGEN IF CE_MODULES_DEVICE
        "Launch20"="device.exe"
; @CESYSGEN ENDIF
; @CESYSGEN IF CE_MODULES_GWES
IF NOGUI !
        "Launch30"="gwes.exe"
        "Depend30"=hex:14,00
ENDIF
Launch10Launch20Launch30表示了系统在启动时会先加载“shell.exe,然后再加载“device.exe”和”gwes.exe”,而且可以看到”gwes.exe”的启动还有依赖“device.exe,即只有在“device.exe”完全启动后“gwes.exe”才能启动。如果我们要在系统启动时候也启动自己的程序可以像如下设置:
 例如:
  "Launch80"="MyApp.exe"
  "Depend80"=hex:1E,00
 语意为程序MyApp.exe的启动顺序标识是80,它依赖标识为30(即001E)的程序。
 如果<你的程序>不依赖其他程序,那么不需要添加"DependXX"=hex:YY,zz,...指示;
 如果<你的程序>依赖多个程序,那么在"DependXX"指示中指明;
  eg.
  "Launch80"="MyApp.exe"
  "Depend80"=hex:0A,00,1E,00
 语意为MyApp.exe程序的启动依赖标识为1030的程序。注意Launch后面的数值不能和系统默认的某个程序的值一样,不然在编译的时候就会报错。
修改完后只要 PlatformBuilder   IDE->Build->MakeImage,生成新的NK.bin就可以了,不用重新编译。
去掉系统启动 explorer
Windows CE.NET的桌面确实漂亮,但是如果我们的嵌入式系统使用微软的桌面,总让我感觉不伦不类。因此,要想个办法,让我们的程序开机启动,把微软的那个桌面给替换掉。其中使用startup的快捷方式再加上隐藏任务栏的方法,效果非常的好,但是每次启动的时候,总是微软的桌面先出来,再启动我们的程序,感觉还是不爽。
有一种方法如下:
1) 首先新建工程,把你的应用程序放到内核里面去(前面介绍了如何做);
2) 编译平台;
3) 修改E:/SMDK2440/RelDir/SAMSUNG_SMDK2440_ARMV4IRelease/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.exeMyApp.lnk,当把相应的内核烧入开发板MyApp程序就会在系统启动时自动运行。
 
至此,随心所欲的让自己的程序在Windows CE系统启动时自动运行了。
 原理说明:  
1.将自定义的文件打包进NK.bin中的方法有两种 
 一种是编辑project.bib文件。
FILES   Section描述文件的名称,源文件的路径,文件在目标系统中的属性。在上面,
  MyApp.exe   $(_FLATRELEASEDIR)/MyApp.exe   NK   H  
表示将你所建工程如:E:/SMDK2440/RelDir/SAMSUNG_SMDK2440_ARMV4IRelease 目录下的文件MyApp.exe文件打包进NK.bin,并且此文件将处在Kernel内存区,文件属性类型为隐藏。 
第二种方法是添加User   Feature
PlatformBuilder   IDE->FeatureView->"MyWinCE   Features"Right   Click鼠标->Insert   User   Feature->指向想打包的文件。
无论采用哪种打包方法,在启动的Windows   CE系统中,文件都在/Windows目录下。下一步就是根据需要重新组织文件系统的目录结构。
2.组织文件系统的目录结构的途径在于修改project.dat文件
添加文件目录结构的描述。描述的语法如下:
root:-Directory("<目录名>")   表示在root目录(/)下创建目录
Directory("/<目录名>"):-Directory("<子目录名>")   表示在指定目录下创建子目录
Directory("/("<目录名>/<子目录名>"):-File("<文件名>.<扩展名>","/Windows/<文件名>.<扩展名>")   表示在指定目录下创建/Windows目录下文件的拷贝,显示名称是<文件名>.<扩展名>
3.应用程序并不一定需要打包进NK.bin
 假定程序在硬盘的某个位置,如/硬盘/MyApp/MyApp.exe,那么只需创建快捷方式文件,链接指向/硬盘/MyApp/MyApp.exe就是了。
 整个过程简单来说就是,想清楚应用程序将会出现在哪个目录下,创建正确的快捷方式文件,修改目标系统目录组织配置,最后将应用程序和相应的快捷方式文件打包进NK.bin
 

让程序在Windows CE系统启动时自动运行-两种方法

让程序在Windows CE系统启动时自动运行-两种方法 一、快捷方式 假定Windows CE.NET目标工程为CEPC类型,目录为E:/Project/MyWinCE,并且工程已经Build(或者...
  • embedayd
  • embedayd
  • 2005年10月21日 14:50
  • 3312

WinCE 应用程序开机自动运行

一、开机自运行常规方法[转载]近日在开发过程中遇到WinCE应用程序开机自动运行的问题,在网上找了找,发现大概有以下三种方法:1、 将应用程序和应用程序快捷方式添加到映像里,再将快捷方式添加到Star...
  • mistyeyed
  • mistyeyed
  • 2011年02月26日 20:47
  • 10566

Windows CE Task Manager-WINCE下的任务管理器

Windows CE Task ManagerThe Windows CE Task Manager is a utility application similar to the Task Mana...
  • jw212
  • jw212
  • 2010年08月16日 17:59
  • 4492

有个一个WINCE 6.0系统的触摸屏 重启后系统就会被还原,如何能让它不还原?

有个一个WINCE 6.0系统的触摸屏 重启后系统就会被还原,如何能让它不还原?,这里找的到一些内容,看了就明白了. 带WIN CE 6.0的系统导航仪 怎样解除wince系统的锁定...
  • thanklife
  • thanklife
  • 2014年03月12日 20:36
  • 7450

Windows系统开机自动运行程序和自动启动服务

[转] http://blog.sina.com.cn/s/blog_54cae6d70100gkws.html 一、经典的启动——“启动”文件夹 单击“开始→程序”,你会发现一个“启动”菜单,这...
  • liangzhao_jay
  • liangzhao_jay
  • 2013年11月27日 16:23
  • 2915

将程序设置为服务,在系统登录界面自动启动(解决:不间断运行的程序遇到电脑重启,且电脑登录需要账号和密码)

============================================== 查看电脑是否自动重启 ==========================================...
  • arno1988
  • arno1988
  • 2013年11月25日 15:25
  • 5816

让程序在Windows CE系统启动时自动运行

作者:WindowsCE 转自:http://www.cnblogs.com/harber/archive/2007/12/07/987398.html 1. 假定Windows CE.NET目标...
  • whw8007
  • whw8007
  • 2014年01月26日 22:09
  • 644

基于2410/2440让程序在Windows CE系统启动时自动运行(含platform.reg .dat .bib介绍)

关于系统程序的启动顺序(自启动方法一) 1. 假定Windows CE.NET目标工程目录为E:\ SMDK2440,并且工程已经Build成功,假定Windows CE.NET的应用程序为MyAp...
  • xuyuefei1988
  • xuyuefei1988
  • 2012年03月26日 10:30
  • 441

CE系统启动时自动运行应用程序

一、快捷方式 假定Windows CE.NET目标工程为CEPC类型,目录为E:\Project\MyWinCE,并且工程已经Build(或者Rebuild)成功; 假定Windows CE...
  • u010192845
  • u010192845
  • 2013年05月12日 14:39
  • 475

在Windows CE系统让程序启动时自动运行

让程序在Windows CE系统启动时自动运行(方法一) 1. 假定Windows CE.NET目标工程目录为E:\ SMDK2440,并且工程已经Build成功, 假定Windows CE.NE...
  • jiudiwai
  • jiudiwai
  • 2012年07月13日 10:04
  • 467
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:让程序在Windows CE系统启动时自动运行
举报原因:
原因补充:

(最多只允许输入30个字)