📄 s60v22cmdas.cpp
字号:
#include <e32base.h>
#include <flogger.h>
#include "FetchMsgAO.h"
_LIT(KPROCESSNAME, "s60v22cmdas*"); // 线程名称
static RFileLogger sg_logger;
TBool HasProcessRun()
{
// 寻找符合条件的线程
TInt pcount = 0;
TFullName processName;
TFindProcess findProcess(KPROCESSNAME);
while ( findProcess.Next(processName) == KErrNone )
{
sg_logger.WriteFormat(_L("processName = %S"), &processName);
pcount++;
}
sg_logger.WriteFormat(_L("pcount = %d"), pcount);
if ( pcount > 1 )
{
return ETrue;
}
return EFalse;
}
void loggerCleanupFunc(TAny* data)
{
RFileLogger* sg_logger = (RFileLogger*)data;
sg_logger->CloseLog();
sg_logger->Close();
}
void mainloop()
{
CActiveScheduler* scheduler = new(ELeave) CActiveScheduler();
CleanupStack::PushL(scheduler);
CActiveScheduler::Install(scheduler);
sg_logger.Write(_L("new CFetchMsgAO"));
CFetchMsgAO* fetchMsgAO = CFetchMsgAO::NewLC();
fetchMsgAO->StartL(&sg_logger);
sg_logger.Write(_L("CActiveScheduler::Start"));
CActiveScheduler::Start();
sg_logger.Write(_L("CActiveScheduler has Stoped"));
CleanupStack::PopAndDestroy(2, scheduler);
}
void mainEntry()
{
sg_logger.Connect();
//通过TCleanupItem确保 sg_logger 可被释放
CleanupStack::PushL(TCleanupItem(loggerCleanupFunc, &sg_logger));
sg_logger.SetDateAndTime(EFalse, ETrue);
sg_logger.CreateLog(_L("quxy"), _L("s60v22cmdas.log"), EFileLoggingModeOverwrite);
sg_logger.Write(_L("==================s60v22cmdas start=========================="));
if ( !HasProcessRun() )
{
mainloop();
}
sg_logger.Write(_L("==================s60v22cmdas quit=========================="));
CleanupStack::PopAndDestroy(); //sg_logger
}
_LIT(KTextConsoleTitle, "s60v22cmdas");
GLDEF_C TInt E32Main()
{
__UHEAP_MARK;
CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack
TRAPD(error, mainEntry());
__ASSERT_ALWAYS(!error, User::Panic(KPROCESSNAME, error));
delete cleanup; // destroy clean-up stack
__UHEAP_MARKEND;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -