• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            franksunny的個人技術空間
            獲得人生中的成功需要的專注與堅持不懈多過天才與機會。 ——C.W. Wendte

             

            關于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",也即五位描述符長度的內容。對于第二種和第三種情況,我是百思不得其解,為什么傳執行文件名就可以,而傳完整路徑就是不行。

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

             

             

             

            posted on 2010-03-26 17:10 frank.sunny 閱讀(1658) 評論(0)  編輯 收藏 引用 所屬分類: symbian 開發

            常用鏈接

            留言簿(13)

            隨筆分類

            個人其它博客

            基礎知識鏈接

            最新評論

            閱讀排行榜

            評論排行榜

            精品久久久久久无码中文字幕| 亚洲精品成人网久久久久久| 激情伊人五月天久久综合| 久久99精品久久只有精品| 欧美精品一区二区精品久久| 久久婷婷五月综合成人D啪| 狠狠色丁香久久婷婷综合| 国产精品伊人久久伊人电影| 理论片午午伦夜理片久久 | 精品久久久久久久| 色综合久久久久综合99| 久久久久国产一级毛片高清版| 亚洲第一永久AV网站久久精品男人的天堂AV | 国内精品久久久久影院日本| 久久久久国产精品麻豆AR影院 | 国产精品美女久久久| 亚洲精品99久久久久中文字幕| 久久久久无码精品国产不卡| 午夜精品久久久久成人| 9191精品国产免费久久| 人妻少妇久久中文字幕一区二区| 性做久久久久久免费观看| 激情久久久久久久久久| 一级做a爱片久久毛片| 成人综合伊人五月婷久久| 亚洲人成精品久久久久| 超级碰碰碰碰97久久久久| 四虎亚洲国产成人久久精品| 国内精品久久久久久久久| 青青国产成人久久91网| 久久福利青草精品资源站| 好属妞这里只有精品久久| 久久久久久久综合日本亚洲| 久久亚洲精品国产精品| 久久久久久国产精品免费无码| 亚洲人成伊人成综合网久久久| 久久永久免费人妻精品下载| 久久狠狠高潮亚洲精品| 国产麻豆精品久久一二三| 久久人爽人人爽人人片AV| 狠色狠色狠狠色综合久久 |