⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s60v22cmdas.cpp

📁 symbian平台进程间通信代码
💻 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 + -