franksunny的个人技术空间
获得人生中的成功需要的专注与坚持不懈多过天才与机会。 ——C.W. Wendte

第二版的开机自启动比较麻烦,需要涉及到创建mdl文件并且需要在mdl中将另一程序开启,所以略过。至于第三版的开机自启动相对来说更加简单些:

假设你的应用ID为:ef37946b

1)data下新建一个文件, [ef37946b].rss(注意加上[])文件具体代码如下

#include <startupitem.rh>

RESOURCE STARTUP_ITEM_INFO dispatcher

{

    executable_name = "!:\\sys\\bin\\AutoStart.exe";

    recovery = EStartupItemExPolicyNone;

}

此处的AutoStart.exe是你的应用程序文件名。

注:笔者试图通过修改此处为其他应用程序名从而启动指定其他程序,但是没有成功。

2)mmp文件中增加以下代码

START RESOURCE [ef37946b].rss

TARGETPATH                 \private\101f875a\import

HEADER                                  

END

确保:

LANG              SC

CAPABILITY         ReadUserData

注意“\private\101f875a\import”不能够变。

3)pkg文件中增加以下代码

"$(EPOCROOT)epoc32\data\z\private\101f875a\import[ef37946b].rSC"-"!:\private\101f875a\import\[ef37946a].rSC"

 

如果是采用carbide c++编译,那么使用上述代码就可以了。

如果是使用makesis命令行打包或者使用.Net编译,那么你需要修改成绝对路径,路径名视你的安装目录而定。

例如:

"C:\Symbian\9.1\S60_3rd_MR\Epoc32\Data\z\private\101f875a\import[ef37946b].rSC"-"!:\private\101f875a\import\[ef37946a].rSC"

posted on 2008-05-09 22:48 frank.sunny 阅读(2706) 评论(15)  编辑 收藏 引用 所属分类: symbian 开发

FeedBack:
# re: 如何在第三版上实现开机自启动
2008-05-23 00:07 | CJQ
顶!!

不过我不是很明白!能不能说详细易懂一点啊!
  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2008-05-23 01:36 | frank.sunny
@CJQ
不知道你是不是搞开发的,如果是开发的,那看不懂的话,哪里不明白,你明说

没用搞过symbian S60 SDK开发的话,那我也不知道该如何详细解释了,很抱歉  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2008-05-27 09:28 | ldta100
请问:笔者试图通过修改此处为其他应用程序名从而启动指定其他程序,但是没有成功
这句话是什么意思
AutoStart.exe是指 应用程序.exe 对吗
还有我怎么才能知道我的应用程序ID呢,谢谢  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2008-05-27 11:14 | frank.sunny
@ldta100

AutoStart.exe是你需要自启动的程序,也就是你本人的执行程序名称,好比你建了一个工程HelloWorld,那么这个就是HelloWorld.exe

再回答上一个问题,假如你的程序为HelloWorld.exe,那么或许还有一个其它程序叫Hello.exe,如果你想自启动Hello.exe而将代码修改为
#include <startupitem.rh>
RESOURCE STARTUP_ITEM_INFO dispatcher
{
executable_name = "!:\\sys\\bin\\Hello.exe";
recovery = EStartupItemExPolicyNone;
}
那么将不能实现需求

应用程序的id,如果这个程序不是你开发的,你可以装个FExploorer查看得到

我怀疑楼上应该是搞汉化之类的吧,在这一块,本人实在帮不上忙,因为我没有做过

  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2008-05-27 12:11 | ldta100
你说的很清楚,我的功能已经实现了,谢谢你呀,不过我还有一个问题就是第一步我在data下建立一个.rss文件,之后用carbide c++编译,会出现错误,提示我说group里缺少一个.rss文件,我把这个文件复制到group里,就可以通过编译了,这是什么原因呢?  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2008-05-27 17:48 | frank.sunny
@ldta100

没遇到过,不介意的话,可以把mmp文件内容给我看下,怀疑是mmp中路径的问题  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2008-05-28 14:40 | ldta100
当然可以
/*
============================================================================
Name : emailbody.mmp
Author : aaaa
Copyright : Your copyright notice
Description : This is the project specification file for emailbody.
============================================================================
*/
START RESOURCE [ECA93FBE].rss

TARGETPATH \private\101f875a\import

HEADER

END

LANG SC

TARGET emailbody.exe
TARGETTYPE exe
UID 0 0xECA93FBE

USERINCLUDE ..\inc
SYSTEMINCLUDE \epoc32\include


LIBRARY apparc.lib
LIBRARY avkon.lib
LIBRARY bafl.lib
LIBRARY cone.lib
LIBRARY euser.lib
LIBRARY efsrv.lib
LIBRARY estor.lib
LIBRARY etext.lib
LIBRARY eikcore.lib
LIBRARY eikcdlg.lib
LIBRARY eikctl.lib
LIBRARY eikcoctl.lib
LIBRARY msgs.lib smcm.lib gsmu.lib
LIBRARY flogger.lib
LIBRARY apmime.lib CommonUI.lib
LIBRARY imcm.lib mmscli.lib
LIBRARY sendas2.lib


CAPABILITY LocalServices NetworkServices ReadUserData UserEnvironment WriteUserData

SOURCEPATH ..\src
SOURCE emailsend3rd.cpp UP.cpp
  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2008-05-28 15:57 | frank.sunny
这就对了吗,默认的mmp在group文件夹中,自然默认的资源路径也在group文件夹下了

在START RESOURCE [ECA93FBE].rss

TARGETPATH \private\101f875a\import

HEADER

END
前加上代码
SOURCEPATH ..\data
这样就可以放在data下面了
其实这些都是一个形式,只要了解mmp的编写就知道是怎么回事情了  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2008-05-29 18:02 | ldta100
问题解决了,谢谢你,祝你每天都有一份好心情!!  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2009-03-11 17:28 | beautymind2008
你好!
我按照你的方法写了一个启动界面的程序,但是没有启动成功,你能帮我看看代码吗?
我的QQ38224875  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2009-03-11 21:09 | frank.sunny
本人不用qq
你如果方便就贴出代码或者对照文章仔细查查你哪里不对吧?  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2009-03-13 10:10 | beautymind2008
1.我的UID3是0xE59275ED所以在data目录下建立了文件[E59275ED].rss,并加入代码:
#include <startupitem.rh>
RESOURCE STARTUP_ITEM_INFO dispatcher
{
executable_name = "!:\\sys\\bin\\ATStart.exe";
recovery = EStartupItemExPolicyNone;
}

2.mmp中加入代码:
START RESOURCE [E59275ED].rss
TARGETPATH \private\101f875a\import
HEADER
END
确保了
LANG SC (我的系统自动生成的是01文件,这个我也试过也是不能启动,后来就该成了SC)
CAPABILITY ReadUserData
3.pkg文件中加入代码:
"$(EPOCROOT)epoc32\data\z\private\101f875a\import[E59275ED].rSC"-"!:\private\101f875a\import\[E59275ED].rSC"

我用的是N95(8G)手机,sis文件生成以后做了open signed,在手机上装了查看进程和任务的软件,但是开机后看不到程序的相关进程和任务!!
您帮我看看还有什么地方写的不对!!谢谢!!!  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2009-03-13 10:24 | beautymind2008
我把mmp文件和pkg都发上来吧,我做了很多测试了都不行,您能留个邮箱吗?我把工程发给你!!
mmp:

TARGET ATStart.exe
UID 0x100039CE 0xE59275ED
VENDORID 0
TARGETTYPE exe
EPOCSTACKSIZE 0x5000

SYSTEMINCLUDE \epoc32\include \epoc32\include\variant \epoc32\include\ecom
USERINCLUDE ..\inc ..\data

SOURCEPATH ..\data
START RESOURCE ATStart.rss
HEADER
TARGETPATH resource\apps
END //RESOURCE

START RESOURCE [E59275ED].rss //后加上的
TARGETPATH \private\101f875a\import //后加上的
HEADER //后加上的
END //后加上的

START RESOURCE ATStart_reg.rss
TARGETPATH \private\10003a3f\apps
END //RESOURCE

LIBRARY euser.lib apparc.lib cone.lib eikcore.lib avkon.lib
LIBRARY commonengine.lib efsrv.lib estor.lib eikcoctl.lib eikdlg.lib
LIBRARY eikctl.lib bafl.lib fbscli.lib aknnotify.lib aknicon.lib
LIBRARY etext.lib gdi.lib egul.lib insock.lib
LIBRARY ecom.lib InetProtUtil.lib http.lib esock.lib

LANG SC //01改为了SC

START BITMAP ATStart.mbm
HEADER
TARGETPATH \resource\apps
SOURCEPATH ..\gfx
SOURCE c12,1 list_icon.bmp list_icon_mask.bmp
END

SOURCEPATH ..\src

#ifdef ENABLE_ABIV2_MODE
DEBUGGABLE_UDEBONLY
#endif

SOURCE ATStartContainerView.cpp ATStartContainer.cpp ATStartDocument.cpp ATStartAppUi.cpp ATStartApplication.cpp

CAPABILITY ReadUserData //后加上的

pkg:
; ATStart.pkg
; This is an auto-generated PKG file by Carbide.
; This file uses variables specific to Carbide builds that will not work
; on command-line builds. If you want to use this generated PKG file from the
; command-line tools you will need to modify the variables with the appropriate
; values: $(EPOCROOT), $(PLATFORM), $(TARGET)
; Also, the resource file entries should be changed to match the language
; used in the build. For example, if building for LANGUAGE_01, change the file
; extensions .rsc to .r01.
;
;Language - standard language definitions
&EN

; standard SIS file header
#{"ATStart"},(0xE59275ED),1,0,0

;Localised Vendor name
%{"Vendor-EN"}

;Unique Vendor name
:"Vendor"

;Supports Series 60 v 3.0
[0x101F7961], 0, 0, 0, {"Series60ProductID"}

;Files to install
;You should change the source paths to match that of your environment
;<source> <destination>
"$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(TARGET)\ATStart.exe" -"!:\sys\bin\ATStart.exe"
"$(EPOCROOT)Epoc32\data\z\resource\apps\ATStart.rSC" -"!:\resource\apps\ATStart.rSC"
"$(EPOCROOT)Epoc32\data\z\private\10003a3f\apps\ATStart_reg.rSC" -"!:\private\10003a3f\import\apps\ATStart_reg.rSC"
"$(EPOCROOT)epoc32\data\z\resource\apps\ATStart_aif.mif" -"!:\resource\apps\ATStart_aif.mif"
"$(EPOCROOT)epoc32\data\z\resource\apps\ATStart.mbm" -"!:\resource\apps\ATStart.mbm"

;这个路径是我后加上的
"$(EPOCROOT)epoc32\data\z\private\101f875a\import[E59275ED].rSC"-"!:\private\101f875a\import\[E59275ED].rSC"

; Add any installation notes if applicable
;"ATStart.txt" -"!:\private\0xE59275ED\ATStart.txt"

  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2009-03-13 20:46 | frank.sunny
首先,不妨建议你装到其他手机上试一下,看能否可行
其次,N95好高级的,将设备号改成0x102032BE试试看可行不
最后,说句实话,我也快小半年没搞过symbian,手上没有智能手机,建议你去论坛看看,如果你真要发邮件给我,那就发frank.sunny@163.com,不过真的未必帮得上忙  回复  更多评论
  
# re: 如何在第三版上实现开机自启动
2009-03-18 16:19 | beautymind2008
问题解决了:)代码没问题 第一次签名没签上!!呵呵  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



常用链接

留言簿(13)

随笔分类

个人其它博客

基础知识链接

最新评论

阅读排行榜

评论排行榜