• <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>

            Benjamin

            靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠(yuǎn)。
            隨筆 - 397, 文章 - 0, 評論 - 196, 引用 - 0
            數(shù)據(jù)加載中……

            Wince及mobile常用代碼(續(xù))

            一、怎樣將已安裝好的應(yīng)用程序卸載:
            用unload.exe,
            szUninstallBuf這個(gè)參數(shù)必須和注冊表 HLM\SOFTWARE\APPS\下的對應(yīng)應(yīng)用的名稱一致。

            有個(gè)前提,使用這個(gè)必須是在cab中沒有指定 nouninstall這個(gè)參數(shù)

            PROCESS_INFORMATION stProgressInfo;
            if ( CreateProcess(_T("\\Windows\\unload.exe"), szUninstallBuf, NULL, NULL, NULL, 0, NULL, NULL, NULL, &stProgressInfo) )

            二、屏蔽talk鍵(打電話的那個(gè)鍵):向窗口發(fā)送SHCMBM_OVERRIDEKEY消息,在WM_HOTKEY中進(jìn)行處理。
            參考SDK自帶的Sample,位于“Windows Mobile 6 SDK\Samples\Common\CPP\Win32\FullScreen”目錄。該例子演示了如何在Windows Mobile上隱藏taskbar和softkey,進(jìn)行全屏顯示。其中,退出全屏的功能,采用softkey按鈕來實(shí)現(xiàn)。而具體的方式,就是向窗口發(fā)送SHCMBM_OVERRIDEKEY消息,在WM_HOTKEY中,加入用戶自己的應(yīng)用。以該工程為例,我們進(jìn)行修改,加入“按Talk按鍵退出全屏”這個(gè)功能,而不彈出撥號界面。
            1.在SetSoftkeyBarForFullScreen函數(shù)中,加入消息發(fā)送函數(shù):

               // Override/Undo softkeys for key press notifications, so we can

               // display taskbar & softkeys on SK1/SK2 press in full screen.

                DWORD dwBits;

                dwBits = bFullScreen

                            ? SHMBOF_NODEFAULT | SHMBOF_NOTIFY

                            : 0;

                SendMessage(hwndSoftKeyBar,

                            SHCMBM_OVERRIDEKEY,

                            VK_TSOFT1,

                            MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY, dwBits));

                SendMessage(hwndSoftKeyBar,

                            SHCMBM_OVERRIDEKEY,

                            VK_TSOFT2,

                            MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY, dwBits));

                //加入的消息發(fā)送函數(shù)

                 SendMessage(hwndSoftKeyBar,

                            SHCMBM_OVERRIDEKEY,

                            VK_TTALK,

                            MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY, dwBits));

             

            2.在CALLBACK DialogProc(…)函數(shù)的WM_HOTKEY中,加入VK_TTALK鍵的處理:

               caseVK_TTALK:

                    {

                         // if we are in full screen mode we want to exit

                         // when the user presses a softkey.

                         if(g_bFullScreen)

                         {   

                              SendMessage(GetDlgItem(hWnd,IDC_EDIT), WM_SETTEXT, 0, (LPARAM)L"[TALKkey] Exiting Full Screen");

                              FullScreen(hWnd, FALSE);

                          }

                      }

               break;
            有關(guān)參考如下:

            WM_HOTKEY:http://msdn.microsoft.com/en-us/library/aa453868.aspx

            SHCMBM_OVERRIDEKEY:http://msdn.microsoft.com/en-us/library/aa454997.aspx

            三、Windows Mobile上的無線網(wǎng)絡(luò)接入點(diǎn)掃描:codeproject上有個(gè)Wifi AP掃描程序,稱為:Wifi scanner + custom MFC controls。用它能夠掃描當(dāng)前的無線環(huán)境,發(fā)現(xiàn)周圍的AP接入點(diǎn),顯示他們的名字、MAC地址、信號強(qiáng)度(RSSI)、Wifi信道以及是否需要密碼等信息。
            源碼的運(yùn)行設(shè)備是Pocket PC 2003se,要運(yùn)行在window mobile平臺,要在編譯選項(xiàng)中Configuration Manger中選中wm設(shè)備,Active solution platform

            選NEW,在彈出的窗口中,將new platform選擇為windows mobile 的sdk,最后在Project->Properties中,選擇Linker中的Command Line,在Additional Option中,將“machine:ARM”改為“machine:THUBM”。運(yùn)行效果圖如下:

            Download demo project - 97.6 Kb
            Download source - 90.8 Kb

            四、短信相關(guān)的AT指令:
                 AT+CMGC:發(fā)出一條短消息

                AT+CMGD:刪除SIM卡內(nèi)存的短消息

                AT+CMGF:選擇短消息信息格式:0-PDU;1-文本

                AT+CMGL:列出SIM卡中的短消息PDU/text: 0/"REC UNREAD"-未讀,1/"REC READ"-已讀,2/"STO UNSENT"-待發(fā),3/"STO SENT"-已發(fā),

                            4/"ALL"-全部的

                AT+CMGR:讀短消息

                AT+CMGS:發(fā)送短消息

                AT+CMGW :向SIM內(nèi)存中寫入待發(fā)的短消息

                AT+CMSS:從SIM卡內(nèi)存中發(fā)送短消息

                AT+CNMI:顯示新收到的短消息

                AT+CPMS:選擇短消息內(nèi)存

                AT+CSCA:短消息中心地址

                AT+CSCB :選擇蜂窩廣播消息

                AT+CSMP:設(shè)置短消息文本模式參數(shù)

                AT+CSMS:選擇短消息服務(wù)
            相關(guān)代碼:
            初始化短信模式設(shè)置的時(shí)候,可以使用:

            //set AT+CMGF=1+回車換行

            m_serialPort2.Write(new char[] { 'A', 'T', '+', 'C', 'M', 'G', 'F', '=', '1' }, 0, 9);

            m_serialPort2.Write(new byte[] { 0x0D }, 0, 1);

            m_serialPort2.Write(new byte[] { 0x0A }, 0, 1);


            短信內(nèi)容發(fā)送完畢必須以十六進(jìn)制數(shù)0x1A結(jié)束,例如,發(fā)送短信時(shí),先發(fā)送對方號碼,然后發(fā)送數(shù)據(jù):

            //發(fā)送text中輸入的對方手機(jī)號碼

            stATCommand = "AT+CMGS=+86" + textBoxPhoneNumber.Text;

            btATCommand = stATCommand.ToCharArray();

            m_serialPort2.Write(btATCommand, 0, 22);

            m_serialPort2.Write(new byte[] { 0x0D }, 0, 1);

            m_serialPort2.Write(new byte[] { 0x0A }, 0, 1);

            Thread.Sleep(15);

            m_serialPort2.Write(new char[] { 'H', 'e', 'l', 'l', 'o'}, 0, 5);

            //set SMS end symbol

            m_serialPort2.Write(new byte[] { 0x1A }, 0, 1);

             

            //發(fā)送text中輸入的對方手機(jī)號碼

            stATCommand = "AT+CMGS=+86" + textBoxPhoneNumber.Text;

            btATCommand = stATCommand.ToCharArray();

            m_serialPort2.Write(btATCommand, 0, 22);

            m_serialPort2.Write(new byte[] { 0x0D }, 0, 1);

            m_serialPort2.Write(new byte[] { 0x0A }, 0, 1);

            Thread.Sleep(15);

            m_serialPort2.Write(new char[] { 'H', 'e', 'l', 'l', 'o'}, 0, 5);

            //set SMS end symbol

            m_serialPort2.Write(new byte[] { 0x1A }, 0, 1);

            五、怎樣通過CMPP短信網(wǎng)關(guān)下發(fā)wap push ,相對于下發(fā)普通短信,有兩個(gè)地方不同。
              1、CMPP_SUBMIT消息包的部分參數(shù)值改變。具體是:  
            Msg_Fmt = 4(表示消息內(nèi)容是二進(jìn)制),
                  TP_pid = 0;
                  TP_udhi = 1;
            2、字段Msg_Content的內(nèi)容是二進(jìn)制數(shù)字,有特定的組合方式。格式解析起來,就是所謂的
                  “壓縮后的XML“,即WBXML,一共有7個(gè)部分,把每個(gè)部分的二進(jìn)制碼按順序組合起來填入
                  Msg_Content字段,當(dāng)做普通短信下發(fā)即可。代碼大概如下:
             
              char szWapPushHeader1[12] = {0x0B, 0x05, 0x04, 0x0B, 0x84, 0x23, 0xF0, 0x00, 0x03,
                                           0x03, 0x01, 0x01};
              char szWapPushHeader2[9] = {0x29, 0x06, 0x06, 0x03, 0xAE, 0x81, 0xEA, 0x8D, 0xCA};
              char szWapPushIndicator[8] = {0x02, 0x05, 0x6A, 0x00, 0x45, 0xC6,0x0C, 0x03};
              char szWapPushDisplayTextHeader[3] = {0x00, 0x01, 0x03};
              char szEndOfWapPush[3] = {0x00, 0x01, 0x01};
             
              //以上數(shù)字串是什么意思,估計(jì)有幾個(gè)說明可以參考下, 又是前人經(jīng)驗(yàn):
              //0B WAP PUSH頭部的總長度
              //05040B8423F0表示接下來是一個(gè)WAP PUSH
              //00 表示是Concatenated Short Messages
              //03 長度
              //03 reference number
              //01 表示分成1個(gè)短信發(fā)送
              //01 當(dāng)前包的序號
              //這個(gè)并不不影響功能的樣子。好象只需要知道分幾條短信和
              //序號發(fā)就可以了。以上每個(gè)部分,也有其他可以通過測試的不同的串值,目前只測了這種
              //常見的值。
              //以下兩個(gè)字串就是需要自己填寫的了:
              //szWapPushUrl:wap push的目的鏈接,費(fèi)盡心機(jī)不就是想把這個(gè)發(fā)出去嘛。要求是"去除了
              //http://前綴的UTF8編碼的Url地址"的二進(jìn)制編碼。現(xiàn)在是小測試,直接寫上值吧,否則應(yīng)
              //該是經(jīng)過編碼轉(zhuǎn)化的。以下url內(nèi)容是"wap.sina.com.cn"
              char szWapPushUrl[12]  = {0x77,0x61,0x70,0x2E,0x73,0x69,0x6e,0x61,0x2e,0x63,0x6f,0x6d};
             
              //這個(gè),就是想在手機(jī)上顯示的關(guān)于這個(gè)URL的文字說明了,在我的手機(jī)上顯示成該wap push
              //的標(biāo)題.也同樣是"UTF8編碼的二進(jìn)制"內(nèi)容是"好好學(xué)習(xí)"
              char szMsg[12] = {0xE5,0xA5,0xBD,0xE5,0xA5,0xBD,0xE5,0xAD,0xA6,0xE4,0xB9,0xA0};
            具體的實(shí)現(xiàn)代碼如下:
            char szHex[1024];
              int iUrllen,iMsgLen,iLen;
              iUrllen = 12;
              iMsgLen = 12;
              memset(szHex, 0, sizeof(szHex));
              iLen = 0;
              memcpy(szHex, szWapPushHeader1, 12);
              iLen += 12;
              memcpy(szHex+iLen, szWapPushHeader2, 9);
              iLen += 9;
              memcpy(szHex+iLen, szWapPushIndicator, 8);
              iLen += 8;
              memcpy(szHex+iLen, szWapPushUrl, iUrllen);
              iLen += iUrllen;
              memcpy(szHex+iLen, szWapPushDisplayTextHeader, 3);
              iLen += 3;
              memcpy(szHex+iLen, szMsg, iMsgLen);
              iLen += iMsgLen;
              memcpy(szHex+iLen, szEndOfWapPush, 3);
              iLen += 3;
              Msg_Length = iLen;
              memcpy((char*)Msg_Content, szHex, Msg_Length);
             
              //把Msg_Content當(dāng)普通短信下發(fā)就可以了。對于push很多地方是被運(yùn)營商給屏蔽了。

            六、Cookie文件格式,默認(rèn)位置:默認(rèn)位置是Windows\Profiles\Guest\Cookies,持久性cookie,有一個(gè)截止日期,都存儲在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders的注冊表項(xiàng)中指定的位置;
            如果沒有到期日,會話cookie都存儲在內(nèi)存中,并且只提供給創(chuàng)建它們的進(jìn)程使用。
            所以,要設(shè)置一個(gè)多個(gè)進(jìn)程都可以使用的cookie,必須設(shè)置好到期日。
            格式如下:
             cnt_uid_www
             fa565c5abe27b0eb1f0497
             csdn.net/
             1536
             560450176
             29956594
             2009325664
             29943116
             *
             其中
             第1行為Cookie名稱;
             第2行是Cookie的值;
             第3行是Cookie所屬站點(diǎn)的地址;
             第4行是個(gè)標(biāo)記值;
             第5行為超時(shí)時(shí)間的低位(Cardinal/DWORD);
             第6行為超時(shí)時(shí)間的高位;
             第7行為創(chuàng)建時(shí)間的低位;
             第8行為創(chuàng)建時(shí)間的高位;
             第9行固定為 * ,表示一節(jié)的結(jié)束。
             一個(gè)文件可能包含有多個(gè)節(jié),按上面的格式循環(huán)即可。
             
            也可以用程序來寫cookie,當(dāng)打開相關(guān)網(wǎng)頁時(shí),網(wǎng)頁可自動識別,雖然這樣的實(shí)際應(yīng)用并不是很常見。
             InternetSetCookie(L"csdn.net/", L"cnt_uid_www", L"fa565c5abe27b0eb1f0497;expires=Sat,10-Jul-2010 00:00:00 GMT");
             如上,“expires=Sat,10-Jul-2010 00:00:00 GMT”指定了cookie的有效期限。
            注冊表位置:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer \Shell Folders,下面的
            Cache、Cookies、History三個(gè)子鍵路徑中的“Windows\”全部換成“Storage Card\”即可。系統(tǒng)會自動在SD卡上創(chuàng)建自己的路徑。
            再將Windows目錄下的profiles整個(gè)文件夾刪掉,文件目錄已經(jīng)建立到SD卡上的 \Storage Card\profiles了,

            posted on 2010-04-10 16:52 Benjamin 閱讀(1289) 評論(0)  編輯 收藏 引用 所屬分類: PDA/PPC開發(fā)

            精品精品国产自在久久高清| 免费无码国产欧美久久18| 国内精品久久久久久野外| 久久精品视频网| 久久久久人妻一区精品| 中文字幕久久久久人妻| 久久美女人爽女人爽| 久久精品成人欧美大片| 国产精品va久久久久久久| 一本色道久久HEZYO无码| 狠狠人妻久久久久久综合| 久久综合九色综合网站| 久久人人爽人人爽人人片AV东京热| 一本一本久久A久久综合精品 | 久久狠狠一本精品综合网| 一本一本久久aa综合精品| 久久99精品久久久久久噜噜| 9久久9久久精品| 久久久噜噜噜久久熟女AA片 | 久久狠狠爱亚洲综合影院| 久久精品这里只有精99品| 一级做a爰片久久毛片16| 无码国内精品久久人妻| 日韩欧美亚洲综合久久| 久久夜色精品国产| 办公室久久精品| 91亚洲国产成人久久精品网址| 99久久婷婷免费国产综合精品| 色8久久人人97超碰香蕉987| 亚洲国产综合久久天堂 | 久久精品中文字幕有码| 94久久国产乱子伦精品免费| 99久久无色码中文字幕 | 欧美牲交A欧牲交aⅴ久久| 97久久婷婷五月综合色d啪蜜芽| 精品久久久久久久国产潘金莲| 麻豆久久| 久久中文字幕人妻丝袜| 久久精品国产99久久久| 久久精品国产亚洲欧美| 久久久久亚洲精品天堂久久久久久 |