程序开机自启动

在symbian系统中实现程序自启动有两种方法
 
(1) 通过资源文件来注册
适用范围:S60 3rd, 5th
推荐
 
假设你的自启动应用程序的UID3为: ef37946b
 

1.1 在data下新建一个rss文件,取名为 [ ef37946b].rss (必须要加上[]),并且只能将这个rss生成的rsc文件打包进自启动程序的sis文件来进行安装才会使本程序自启动成功。
写入如下内容:
 
#include <startupitem.rh>

RESOURCE STARTUP_ITEM_INFO auto_startup_info
    {
    executable_name = "!://sys//bin//MyAutoStart.exe";
    recovery = EStartupItemExPolicyNone;
    }
// 此处的MyAutoStart.exe是你的应用程序文件名。
 

1.2 在mmp文件中增加以下代码
 
SOURCEPATH  ../data
START RESOURCE [ef37946b].rss /* 此mmp文件所编译的可执行程序的UID3必须也为ef37946b,否则自启动不会成功。*/
 TARGETPATH    /private/101f875a/import  // 生成的rsc文件名必须要是 "[FFFFFF].rxx"格式
 HEADER
END

//请确保mmp中拥有 ReadUserData 能力,注意" /private/101f875a/import"不能够被更改。
 

1.3 在pkg文件中增加以下代码
"$(EPOCROOT)epoc32/data/z/private/101f875a/import[ef37946b].rsc" - "C:/private/101f875a/startup/[ef37946b].rsc"
  和
"$(EPOCROOT)epoc32/data/z/private/101f875a/import[ef37946b].rsc" - "C:/private/101f875a/import/[ef37946b].rsc"
注意,这里的rsc文件必须拷贝到C盘下,否则自启动会失败。

如果是采用Carbide.c++编译,那么你可以使用上述代码,如果是使用makesis命令行打包或者使用.Net编译,那么你需要修改成绝对路径,路径名视你的安装目录而定。
例如:
"C:/Symbian/9.1/S60_3rd_MR/Epoc32/Data/z/private/101f875a/import[ef37946b].rsc" - "C:/private/101f875a/import/[ef37946a].rsc"
 
 


 
(2) MDL
适用范围:S60 2nd
不推荐

1) 危险系数高
在S60 2nd中,系统启动时会先启动核心,紧接着核心会扫描Recognizer文件(mdl)并启动它们,如果mdl文件有错,那么系统就无法启动,而用户也没有机会删除错误的mdl文件,需要联系客服返修甚至换主板。
2) 适用范围窄
在S60 3rd及以后版本中,Recognizer文件并不会在系统启动时被扫描和启动了,而是当用户打开某个文件时才会启动Recognizer文件。
并且在S60 3rd及以后版本中Recognizer构架也发生了变化,必须通过ECOM架构来实现Recognizer。所以mdl实现开机自启动只能在S60 2nd版本上有效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值