• <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 閱讀(1650) 評論(0)  編輯 收藏 引用 所屬分類: symbian 開發

            常用鏈接

            留言簿(13)

            隨筆分類

            個人其它博客

            基礎知識鏈接

            最新評論

            閱讀排行榜

            評論排行榜

            天天爽天天狠久久久综合麻豆| 久久中文字幕人妻丝袜| 久久综合久久综合久久综合| 久久精品国产91久久麻豆自制| 一本大道久久a久久精品综合| 日本久久中文字幕| 激情伊人五月天久久综合| 欧美777精品久久久久网| 久久笫一福利免费导航| 久久精品一区二区国产| 亚洲国产成人久久一区WWW| 久久精品人人做人人爽97| 午夜精品久久久久成人| 国产精品天天影视久久综合网| 精品久久久久成人码免费动漫| 精品久久香蕉国产线看观看亚洲| 人妻无码精品久久亚瑟影视| 久久久91精品国产一区二区三区 | 91久久精品无码一区二区毛片| 中文字幕久久亚洲一区| 久久亚洲高清观看| 人妻少妇久久中文字幕一区二区| 色综合久久久久综合99| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久线看观看精品香蕉国产| 亚洲中文久久精品无码| 欧美久久亚洲精品| 久久久WWW成人免费毛片| 亚洲午夜久久影院| 久久99毛片免费观看不卡| 久久99精品久久久久久久不卡| 久久久国产99久久国产一| 久久综合久久鬼色| 久久九九久精品国产免费直播| 国产精品gz久久久| 久久精品免费大片国产大片| 久久本道久久综合伊人| 久久精品二区| 久久久国产99久久国产一| 中文无码久久精品| 亚洲αv久久久噜噜噜噜噜|