• <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亚洲国产成人久久精品| 久久久WWW成人免费毛片| 久久婷婷人人澡人人爽人人爱| 欧美亚洲色综久久精品国产| 国产成人综合久久精品尤物| 成人综合久久精品色婷婷| 国产一久久香蕉国产线看观看| 一级女性全黄久久生活片免费 | 91久久婷婷国产综合精品青草| 国产激情久久久久影院老熟女免费| 久久久久亚洲av成人网人人软件| 久久精品国产99国产电影网 | 人妻精品久久无码专区精东影业| 精品国产热久久久福利| 无码精品久久久天天影视| 免费精品久久久久久中文字幕| 久久久久久国产精品免费无码| 久久亚洲高清综合| 亚洲天堂久久精品| 久久超乳爆乳中文字幕| 色偷偷久久一区二区三区| 亚洲精品综合久久| 久久影院午夜理论片无码| 99精品伊人久久久大香线蕉| 99久久精品日本一区二区免费| 影音先锋女人AV鲁色资源网久久 | 美女写真久久影院| 久久国产精品一国产精品金尊| 亚洲精品乱码久久久久久久久久久久| 久久久久亚洲av成人无码电影| 青青青青久久精品国产h| 久久婷婷国产麻豆91天堂| 丁香五月网久久综合| 久久久久久a亚洲欧洲aⅴ| 996久久国产精品线观看|