当前位置:首页 > 编程开发

WinCE下直接启动应用程序的方法

webgou17年前 (2009-12-18)编程开发140
其实让一个程序在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中添加文件》,也要在pb的flatform菜单的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.exe和launch30中定义的gwes.exe, 注意Launch后面的数字范围为0到99 ,此范围之外的将不会有效果。
    这样两种方法的效果都是系统都是系统先启动资源管理器explorer.exe(就是看到的默认桌面),然后启动我们的程序,(如果利用taskman shell然后去掉任务栏那么效果更好)但是这样还不够,我们如何不显示桌面,直接显示我们的程序呢?
    网上有人介绍的方法是去掉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了。
    值得补充的是,我们前面介绍的步骤中那个修改平台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目录
本文来自:我爱研发网(52RD.com) - R&D大本营

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=101

分享给朋友:

“WinCE下直接启动应用程序的方法” 的相关文章

多线程中生成随机数序列重复问题的解决方法

使用过随机数的程序员都知道在程序中并不能够实现的真正的完全的随机数函数。随机数函数产生的是通过公式计算出来的一系列伪随机数,这个公式会采用一个种子数计算出一个数,而该数将成为产生下一个数的种子数。基于产生随机数的原理,两次调用随机数后产生的随机数序列将是一样的,显然,这不是我们的期望的结果。....…

mysql错误:error 0

今天想重装一下MYSQL,不过在安装进行到最后一步的时候总是无法启动服务,出现 ERROR 0 错误,在网上查了一下知道原来是当机子上以前装过MYSQL的话就会出现这个问题,可以在命令行下输入(sc delete mysql)来删除存在于系统中的MYSQL服务,但是照做之后仍然无法完成安装,于是我将…

AI 使用 Unity MCP 自动操作 Unity:从连接配置到生成五子棋场景的实战记录

MCP Server 启动验证Unity 插件连接验证新建 Unity 场景创建并挂载 MonoBehaviour 脚本实现单机五子棋Play Mode 验证Console 错误检查对于 Unity 开发来说,这类工具很适合做原型验证和重复性编辑器操作。它还不能完全替代开发者,但已经可以显著减少“写…

中国象棋(单机双人javascript版)

中国象棋,对其编写很感兴趣。由于没有感觉去看,或是抽不出时间来去分析。现把代码贴在这里以后做研究。…

ResultSet概论

  这篇文章并没有给出如何使用ResultSet的具体例子,只是从ResultSet的功能性上进行了详细的讲述。希望这篇文章对大家理解ResultSet能够有所帮助。下面就是这篇文章的具体内容。        …

详解Android源码的编译详解Android源码的编译

本文将为大家介绍的是如何设置Android源码的编译环境,包括Linux下的配置。主要基于Android 1.0环境,希望对大家了解Android开发有所帮助。本次编译过程主要参考官方文档(http://source.Android.com/download)和网上相关资料(如http://blog…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。