Symbian 3rd 带参数启动进程
2010-11-01 14:31
204 查看
S60v2带参数的调用比较简单,通过openfile等模式就可以得到buf8 or filename的参数,最新的S60 3rd/UIQ3.1由于加入了安全性检查,使得打开文件方式的调用都被拦截,在加入SWEvent的能力后才能使用:
MMP里加入:
CAPABILITY SWEvent
测试代码:
1. StartApp 方式调用:
CApaCommandLine *cmd=CApaCommandLine::NewLC();
cmd->SetCommandL(EApaCommandRun);
cmd->SetExecutableNameL(_L("HelloWorld.exe"));
cmd->SetDocumentNameL(_L("x.txt"));
RApaLsSession als;
User::LeaveIfError(als.Connect());
CleanupClosePushL(als);
User::LeaveIfError(als.StartApp(*cmd));
CleanupStack::PopAndDestroy(2);
2. StartDocument
RApaLsSession als;
TThreadId id;
TUid uid;
uid.iUid = 0xE0001001;
als.Connect();
als.StartDocument(_L("yourdocument.txt"), uid, id);
als.Close();
3. PProcess
RProcess* process = new RProcess();
TUidType uidtype(KNullUid);
process->Create(_L("//sys//bin//HelloWorld.exe"), _L("teststring"), uidtype);
process->Resume();
process->Close();
delete process;
4. TFindProcess
_LIT(KPROCESSNAME, "SMSHanger*");
TFullName processName;
TFindProcess findProcess(KPROCESSNAME);
findProcess.Next(processName);
if (processName == KNullDesC)
{
__LOG("YYYY The test 005!/n");
// if SMSHanger is not running, start it!
RApaLsSession session;
User::LeaveIfError(session.Connect());
CleanupClosePushL(session);
CApaCommandLine* cmdln = CApaCommandLine::NewLC();
cmdln->SetExecutableNameL(_L("SMSHanger.exe"));
cmdln->SetCommandL(EApaCommandRun);
User::LeaveIfError(session.StartApp(*cmdln));
CleanupStack::PopAndDestroy(2);
__LOG("YYYY The task is start!/n");
}
在完成启动后可以通过task来检查并激活进程:
TUid uidApp = TUid::Uid(0xE0001001);
TApaTaskList taskList(CEikonEnv::Static()->WsSession());
TApaTask task = taskList.FindApp(uidApp);
TBuf<256> arg;
arg.Append(_L("yourteststring"));
HBufC8* pBuf;
if(task.Exists())
{
//send message to the task; uid is not used, but it doesn's work.
pBuf = HBufC8::NewL(arg.Length());
TPtr8 ptr = pBuf->Des();
ptr.Copy(arg);
nErr = task.SendMessage(TUid::Uid( KUidApaMessageSwitchCreateFileValue ), *pBuf);
nErr = task.SwitchOpenFile(arg);
task.BringToForeground();
}
这个在软件开发期间是能工作的,但作为产品,最终还是必须要做SymbianSign才能通过,详细的可以看本站SymbianSign的帖。
完成Symbian自启动安装程序:
RApaLsSession iApaLsSession;
User::LeaveIfError(iApaLsSession.Connect()); // connect to AppArc server
_LIT( KSISFileName, "c://ExeLauncher.SIS" );
TThreadId threadId;
TInt err = iApaLsSession.StartDocument( KSISFileName, threadId );
iApaLsSession.Close();
转自 http://blog.sina.com.cn/s/blog_4c5ad0740100b3hz.html
MMP里加入:
CAPABILITY SWEvent
测试代码:
1. StartApp 方式调用:
CApaCommandLine *cmd=CApaCommandLine::NewLC();
cmd->SetCommandL(EApaCommandRun);
cmd->SetExecutableNameL(_L("HelloWorld.exe"));
cmd->SetDocumentNameL(_L("x.txt"));
RApaLsSession als;
User::LeaveIfError(als.Connect());
CleanupClosePushL(als);
User::LeaveIfError(als.StartApp(*cmd));
CleanupStack::PopAndDestroy(2);
2. StartDocument
RApaLsSession als;
TThreadId id;
TUid uid;
uid.iUid = 0xE0001001;
als.Connect();
als.StartDocument(_L("yourdocument.txt"), uid, id);
als.Close();
3. PProcess
RProcess* process = new RProcess();
TUidType uidtype(KNullUid);
process->Create(_L("//sys//bin//HelloWorld.exe"), _L("teststring"), uidtype);
process->Resume();
process->Close();
delete process;
4. TFindProcess
_LIT(KPROCESSNAME, "SMSHanger*");
TFullName processName;
TFindProcess findProcess(KPROCESSNAME);
findProcess.Next(processName);
if (processName == KNullDesC)
{
__LOG("YYYY The test 005!/n");
// if SMSHanger is not running, start it!
RApaLsSession session;
User::LeaveIfError(session.Connect());
CleanupClosePushL(session);
CApaCommandLine* cmdln = CApaCommandLine::NewLC();
cmdln->SetExecutableNameL(_L("SMSHanger.exe"));
cmdln->SetCommandL(EApaCommandRun);
User::LeaveIfError(session.StartApp(*cmdln));
CleanupStack::PopAndDestroy(2);
__LOG("YYYY The task is start!/n");
}
在完成启动后可以通过task来检查并激活进程:
TUid uidApp = TUid::Uid(0xE0001001);
TApaTaskList taskList(CEikonEnv::Static()->WsSession());
TApaTask task = taskList.FindApp(uidApp);
TBuf<256> arg;
arg.Append(_L("yourteststring"));
HBufC8* pBuf;
if(task.Exists())
{
//send message to the task; uid is not used, but it doesn's work.
pBuf = HBufC8::NewL(arg.Length());
TPtr8 ptr = pBuf->Des();
ptr.Copy(arg);
nErr = task.SendMessage(TUid::Uid( KUidApaMessageSwitchCreateFileValue ), *pBuf);
nErr = task.SwitchOpenFile(arg);
task.BringToForeground();
}
这个在软件开发期间是能工作的,但作为产品,最终还是必须要做SymbianSign才能通过,详细的可以看本站SymbianSign的帖。
完成Symbian自启动安装程序:
RApaLsSession iApaLsSession;
User::LeaveIfError(iApaLsSession.Connect()); // connect to AppArc server
_LIT( KSISFileName, "c://ExeLauncher.SIS" );
TThreadId threadId;
TInt err = iApaLsSession.StartDocument( KSISFileName, threadId );
iApaLsSession.Close();
转自 http://blog.sina.com.cn/s/blog_4c5ad0740100b3hz.html
相关文章推荐
- Symbian 3rd 带参数启动进程
- S60实现带参数启动进程
- linux ulimit命令参数及用法详解--linux限定shell启动进程资源
- PostgreSQL启动过程中的那些事九_十_十一:初始化活跃backend进程列表、创建opts文件、保持非默认GUC参数文件
- 读取其它进程启动参数(综合网上文章)
- 【转】如何编写Symbian 3rd 应用程序,让手机开机自启动
- 一种解决启动进程传递参数过长的方法
- WPF进程接收启动参数
- linux ulimit命令参数及用法详解--linux限定shell启动进程资源
- 查看进程启动参数
- slave复制进程不随mysql启动而启动 skip-slave-start参数
- C++获取进程启动参数
- ps命令查看进程启动时加的参数
- 查看进程的启动参数 (转)
- MFC启动其他MFC进程,并传递参数,同时获取参数
- 设置参数让symbian 3rd mr sdk打出的release包变小
- 查看java进程启动的详细参数和过程
- EVC进程获取启动参数
- jvm 查看当前java进程的启动参数
- 查看进程启动参数