Symbian 3rd 开机自启动在后台运行实现
2010-03-10 16:17:00 来源:WEB开发网一、开机自启动后台运行
按照前一篇博客的方法,可以实现symbian 3rd程序开机自启动,但是出现了一个新的问题,就是能够自启动,但是会显示界面。我希望这个App程序,能够在后台运行,而且不会出现界面。如果我想开机自启动Forth.exe,解决方法为,ForthdataForth_reg.rss,修改如下:
RESOURCE APP_REGISTRATION_INFO
{
app_file="Forth";
localisable_resource_file = qtn_loc_resource_file_1;
localisable_resource_id = R_LOCALISABLE_APP_INFO;
embeddability=KAppNotEmbeddable;
newfile=KAppDoesNotSupportNewFile; //KAppSupportsNewFile
hidden=KAppIsHidden;
launch=KAppLaunchInBackground;
}
这样实现了Forth安装后在程序中看不到Forth这个程序,但是开机自启动之后仍然出现界面。那么可以在UI中添加如下代码:
CForthAppUi::CForthAppUi()
{
TApaTask self( iEikonEnv->WsSession() );
self.SetWgId( iEikonEnv->RootWin().Identifier() );
self.SendToBackground();
PopUpNoteL( _L("Ready") ); //自己写的弹框。这样能够看出程序能够运行
}
头文件:#include
LIB: ws32.lib apgrfx.lib
这样就实现我的要求了。
二、前面能够实现重启手机之后运行,如果想程序安装后马上能够运行,有如下做法:
1、在前台程序中启动这个程序:
lib: LIBRARY apparc.lib // CApaCommandLine
LIBRARY apgrfx.lib
.h #include
#include
在程序中添加如下代码:
const TUid KMenuUid = { 0xE57D62E4 }; //后台程序的UID 即 UID3
TApaTaskList taskList(iEikonEnv->WsSession());
TApaTask task(taskList.FindApp(KMenuUid));
if (task.Exists())
{
task.BringToForeground();
}
else
{
RApaLsSession appSession;
User::LeaveIfError(appSession.Connect());
CleanupClosePushL(appSession);
TApaAppInfo appInfo;
更多精彩
赞助商链接