[Howto]在Symbian程序中启动第三方程序

本文介绍在Symbian平台上启动第三方应用程序的方法,包括设置程序路径和UID、检查程序是否存在、判断程序是否已启动及如何启动或切换到前台等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*=========================================================
// 开启指定第三方程序
Location: apgcli.h
Link against: apgrfx.lib
Class RApaLsSession

Location: APACMDLN.H
Link against: apparc.lib
Class CApaCommandLine

Location: apgtask.h
Link against: apgrfx.lib
Class TApaTask
//=======================================================*/

//STEP 1 设定第三方程序路径和UID.

TFileName appFN; //文件名,如a.app / a.exe
TFileName appFullFN; //全文件名,如c:/system/apps/a.app.
GetAppFullName(appFullFN);
GetAppName(appFN);

TUid appUid; // UID形如0x382498f1.
GetAppUid(appUid);

// 检测程序文件是否存在
#if defined(__SERIES60_30__) || defined(__SERIES60_3X__)
// 在3rd上,直接检测文件是否存在总是失败,故跳过。
if (ETrue)

#else//defined(__SERIES60_30__) || defined(__SERIES60_3X__)
if (NFileHelper::FileIsExist(appFN) == KErrNone)

#endif//defined(__SERIES60_30__) || defined(__SERIES60_3X__)
{
// 检测第三方程序是否已经启动
TApaTaskList apaTaskList(CCoeEnv::Static()->WsSession());
TApaTask appTask = apaTaskList.FindApp(appUid);

if (appTask.Exists())
{
//STEP 2 如果第三方程序已经运行,根据需求作一些特殊处理
//TODO...
}

//STEP 3 无论第三方程序是否正在运行,均可通过Startdocument启动或切换到前台。
RApaLsSession ls;
if(ls.Connect() == KErrNone)
{
TThreadId dummyid;
RApaLsSession ls;
if (ls.Connect() == KErrNone)
{
# if defined(__SERIES60_30__) || defined(__SERIES60_3X__)
// 在3rd上直接用文件名启动
CApaCommandLine* cmdLine=CApaCommandLine::NewL();
cmdLine->SetCommandL(EApaCommandRun);
cmdLine->SetExecutableNameL(appFN); // 只需要一个文件名即可,如exam.exe

TInt err = ls.StartApp(*cmdLine);
delete cmdLine;
cmdLine = NULL;

# elif defined(__WINS__) // 2版模拟器
// 在2rd模拟器上用UID启动
_LIT(filen, ""); // dummy
TInt err = ls.StartDocument(filen, appUid, dummyid);

# else
// 在1rd,2rd真机上,用全路径文件名启动
TInt err = ls.StartDocument(appFullFN, dummyid);

# endif//defined(__SERIES60_30__) || defined(__SERIES60_3X__)

if (err == KErrNone)
{
// 启动成功
}
}
ls.Close();

// 给程序启动时间 2s
User::After(1000000);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值