S60實現帶參數啟動進程

來源:互聯網
上載者:User

最近參與項目,其中用到一些S60中的處理序間通訊功能,現總結部分使用方法:

 

1.通過一個命令列參數實現帶參數啟動應用程式:
         //*啟動代碼, 在需要啟動一個程式時使用*/

//[1]定義命令列參數

CApaCommandLine *cmd=CApaCommandLine::NewLC();

//[2]設定命令類型

cmd->SetCommandL(EApaCommandRun);

//[3]設定要啟動的應用程式名稱

cmd->SetExecutableNameL(_L("HelloWorld.exe"));

//[4]設定參數,該參數為一個檔案名稱

cmd->SetDocumentNameL(_L("x.txt"));

//[5]設定參數,該參數為一個字串

cmd->SetTailEndL(_L8("message tail"));

         //[6]啟動程式

    RApaLsSession als;

    User::LeaveIfError(als.Connect());

    CleanupClosePushL(als);

    User::LeaveIfError(als.StartApp(*cmd));

CleanupStack::PopAndDestroy(2);

 

//*在被啟動的應用程式中接收參數*/

//該功能通過在AppUik中重載CEikAppUi:: ProcessCommandParametersL方法實現。

 

TBool CHello2AppUi::ProcessCommandParametersL(TApaCommand aCommand,TFileName& aDocumentName,const TDesC8& aTail)

{

    //接收啟動代碼中第[4]行參數

    TFileName file = aDocumentName;

//接收啟動代碼中第[2]行參數

    TApaCommand com = aCommand;

//接收啟動代碼中第[5]行參數

    HBufC8* str = aTail.AllocL();

    delete str;

}

 

 

2.通過StartDocument實現帶參數啟動應用程式:
    //*啟動代碼, 在需要啟動一個程式時使用*/

RApaLsSession als;

    TThreadId id;

TUid uid;

         //被啟動程式UID

    uid.iUid = 0xE469529F;

    als.Connect();

    als.StartDocument(_L("hello2.txt"), uid, id);

als.Close();

 

         被啟動程式參數接收參考執行個體1中的參數接收。

 

3.通過RProcess實現帶參數啟動應用程式:
    //*啟動代碼, 在需要啟動一個程式時使用*/

 RProcess* process = new RProcess();

    TUidType uidtype(KNullUid);

    process->Create(_L("//sys//bin//HelloWorld.exe"), _L("teststring"), uidtype);

    process->Resume();

    process->Close();

delete process;

 

//*在被啟動的應用程式中接收參數*/

    RBuf16 buf;

         buf.Create(50);

         User::CommandLine(buf); //buf=”teststring”

         buf.Close();

 

4.通過TFindProcess實現尋找一個啟動的應用程式:
     //要尋找的進程名稱

_LIT(KPROCESSNAME, "Hello2_0xE469529F*");

         //構造進程搜尋對象

TFindProcess findProcess(KPROCESSNAME);

TFullName processName;

//開始搜尋應用程式,通過processName返回結果

          findProcess.Next(processName);

          if (processName == KNullDesC)

          {

                    //尋找的應用程式未啟動

          }

5.向一個啟動的應用程式發送訊息:
    TUid uidApp = TUid::Uid(0xE469529F);

    TApaTaskList taskList(CEikonEnv::Static()->WsSession());

    TApaTask task = taskList.FindApp(uidApp);

    TBuf<256> arg;

    arg.Append(_L("my text"));

    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);

        task.BringToForeground();

    }

//*在被啟動的應用程式中接收參數*/

//該功能通過在AppUik中重載CEikAppUi:: ProcessMessageL方法實現。

 

void CHello2AppUi::ProcessMessageL(TUid aUid, const TDesC8 &aParams)

{

                  TUid u = aUid;

}

 

以上是總結的處理序間通訊的方法。未完。。。

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/nie_feilong/archive/2010/01/18/5208892.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.