關於3rd程序啓動是參數的小結

關於3rd程序啓動是參數的小結

 

Symbian 3rd手機上對於GUI程序的啓動方式可以採用安裝時自啓動、開機自啓動、編碼啓動和點擊功能表圖標的方式啓動,有很多軟件往往對採用何種方式啓動需要做些前後臺以及其它相關的處理方式,那麼如何識別目前的GUI程序是何種啓動呢?

方法就是通過重載GUI框架的C*AppUi:: ProcessCommandParametersL (CApaCommandLine &aCommandLine)函數(該函數還有其它重名函數,這裏只對最簡單的形式進行解析,拋磚引玉),對其入參進行識別來判斷是何種形式的自啓動。下面對我試驗中的幾種情況給出示例,方便以後查詢

1、安裝時啓動,即pkg中標記爲FR,RI標記的啓動方式

C*AppUi::ProcessCommandParametersL中入參的

aCommandLine.OpaqueData().Length()0

 

2、通過Startup List開機自啓動的方式

結果參數與1

 

3、通過點擊程序圖片啓動

C*AppUi::ProcessCommandParametersL中入參的

aCommandLine.OpaqueData().Length()1,具體符號,搞不出來,反正是ASCII碼值爲1的那個符號

 

4、代碼編程啓動

試過三種方式:

第一種

       const TUid KAppUid={0x2CC2D30E};

       TThreadId app_threadid;

       RApaLsSession ls;

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

       TInt err=ls.StartDocument(KNullDesC, KAppUid, app_threadid);

       ls.Close();

結果同3

 

第二種

   RApaLsSession apaLsSession;

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

   CleanupClosePushL(apaLsSession);

   TApaAppInfo appInfo;

   TInt retVal = apaLsSession.GetAppInfo(appInfo, aAppUid);

   if (retVal == KErrNone)

   {

       CApaCommandLine* cmdLine = CApaCommandLine::NewLC();   

       cmdLine->SetCommandL(EApaCommandRun);

        cmdLine->SetExecutableNameL(appInfo.iFullName);

       _LIT8(KExitDesC,"start");

       cmdLine->SetOpaqueDataL(KExitDesC);

       User::LeaveIfError(apaLsSession.StartApp(*cmdLine));

       CleanupStack::PopAndDestroy(cmdLine);

   }

   else

   {

       // The application not found!     

   }

   CleanupStack::PopAndDestroy(&apaLsSession);

結果還是同3

 

第三種

   _LIT8(KExitDesC,"start");

   CApaCommandLine *cmd=CApaCommandLine::NewLC();

   cmd->SetCommandL(EApaCommandRun);

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

   cmd->SetOpaqueDataL(KExitDesC);

   RApaLsSession als;

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

   CleanupClosePushL(als);

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

   CleanupStack::PopAndDestroy(2);

結果與上述就不一樣了,aCommandLine.OpaqueData()內容就是"start",也即五位描述符長度的內容。對於第二種和第三種情況,我是百思不得其解,爲什麼傳執行文件名就可以,而傳完整路徑就是不行。

好了,暫時小結到這裏。好久沒更新空間,今天就上來碼幾個字。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章