📄 uis_autostarter.cpp.svn-base
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -