uis_autostarter.cpp.svn-base

来自「一个在symbian环境下mdl自启动的列子」· SVN-BASE 代码 · 共 112 行

SVN-BASE
112
字号
#include <apmrec.h>#include <apmstd.h>#include <EIKDLL.H>#include <coeccntx.h>
#include <eikenv.h>
#include <eikappui.h>
#include <eikapp.h>
#include <eikdoc.h>
#include <eikmenup.h>
#include <eikon.hrh>
#include "uis_autostarter.h"const TUid KUidNullRecognizer ={0x09A770B5};/******************************************************************************* 系统要求的函数*******************************************************************************/EXPORT_C CApaDataRecognizerType* CreateRecognizer(){	CApaDataRecognizerType* thing = new CNullRecognizerType(); //构造一个空的CApaDataRecognizerType对象返回给系统	StartThread(); //运行我们需要的程序 在这里需要新开一个线程来做这个事情 系统要求这个函数要立刻返回	return thing;}GLDEF_C TInt E32Dll(TDllReason /*aReason*/){	return KErrNone;}/******************************************************************************* 类型注册类*******************************************************************************/CNullRecognizerType::CNullRecognizerType(): CApaDataRecognizerType(KUidNullRecognizer, CApaDataRecognizerType::ENormal){	iCountDataTypes = 1;}TUint CNullRecognizerType::PreferredBufSize(){	// no buffer recognition yet	return 0;}TDataType CNullRecognizerType::SupportedDataTypeL(TInt /*aIndex*/) const{	return TDataType();}void CNullRecognizerType::DoRecognizeL(const TDesC& /*aName*/, const TDesC8& /*aBuffer*/){	// this function is never called}/******************************************************************************* 自动运行程序的函数*******************************************************************************///开始一个新的线程 用于开启其他程序void StartThread(){	TInt res = KErrNone;		RThread* startAppThread;	startAppThread = new RThread();	User::LeaveIfError(res = startAppThread->Create(_L("Autostart starter"), StartAppThreadFunction, KDefaultStackSize, KMinHeapSize, KMinHeapSize, NULL, EOwnerThread) );	startAppThread->SetPriority(EPriorityNormal/*EPriorityLess*/);	startAppThread->Resume();	startAppThread->Close();}//线程函数 如果运行其他程序的时候出现异常由这个函数捕获TInt StartAppThreadFunction(TAny* /*aParam*/){	CTrapCleanup* cleanup = CTrapCleanup::New();	TInt err;	if(cleanup == NULL)	{		err = KErrNoMemory;	}	else	{		TRAP( err, StartAppThreadFunctionL() );	}	delete cleanup;	
	if (err!=KErrNone) 		User::Panic(_L("autostart"), err);
	return err;}//运行一个其他程序void StartAppThreadFunctionL(){	_LIT(KMyAppName, "e:\\system\\Apps\\matrix\\matrix.app"); //需要运行的程序可以从配置文件中读取,这里就直接写在代码中了

	//开始一个App
	CApaCommandLine * cmd=CApaCommandLine::NewL();
	cmd->SetLibraryNameL(KMyAppName);
	//cmd->SetDocumentNameL(KMyDocName); //这里可以设置参数
	cmd->SetCommandL(EApaCommandRun);
	EikDll::StartAppL(*cmd);

	//开始一个Exe
	//EikDll::StartExeL();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?