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

            常用鏈接

            留言簿(13)

            隨筆分類

            個人其它博客

            基礎知識鏈接

            最新評論

            閱讀排行榜

            評論排行榜

            久久亚洲AV无码精品色午夜麻豆| 无码人妻久久一区二区三区免费 | 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 久久亚洲国产精品123区| 狠狠色综合网站久久久久久久高清| 欧美一区二区三区久久综合| 国产三级精品久久| 久久精品国产亚洲AV不卡| 国产999精品久久久久久| 色综合久久中文字幕综合网 | 亚洲国产精品久久| 久久人爽人人爽人人片AV| 亚洲国产成人久久精品影视| 少妇久久久久久被弄到高潮 | 久久精品人妻一区二区三区| 久久综合久久综合九色| 99精品国产在热久久无毒不卡| 三级三级久久三级久久| 久久精品国产69国产精品亚洲| 欧美午夜精品久久久久免费视 | 九九久久自然熟的香蕉图片| 久久久久亚洲AV片无码下载蜜桃| 国内精品久久久人妻中文字幕| 日本亚洲色大成网站WWW久久| 日本三级久久网| 久久久久久久人妻无码中文字幕爆| 无遮挡粉嫩小泬久久久久久久| 久久夜色撩人精品国产小说| 精品午夜久久福利大片| 久久国产精品无码HDAV| 三上悠亚久久精品| 久久久亚洲欧洲日产国码二区| 亚洲人成电影网站久久| 久久影院亚洲一区| 国产精品久久久99| 国产精品美女久久久久AV福利| 99久久精品国产综合一区| 精品久久香蕉国产线看观看亚洲 | 亚洲狠狠婷婷综合久久蜜芽| 亚洲精品午夜国产va久久| yy6080久久|