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

            edog

            冰凍熱狗
            數據加載中……

            #pragma pack和數據對齊問題

            結構數據存放時默認按4對齊,考慮以下程序,輸出結果為:sizeof(A)=12
            typedef struct _A
            {
                
            int x;
                
            char z[7];
            }
            A;

            void main()
            {
                
            int len = sizeof(A);
                printf(
            "sizeof(A)=%d\n", len);    // len = 12
            }


            使用 #pragma pack,設置數據按1對齊,此時輸出結果為:sizeof(A)=11
            #pragma pack(push)
            #pragma pack(
            1)
            typedef 
            struct _A
            {
                
            int x;
                
            char z[7];
            }
            A;
            #pragma pack(pop)

            void main()
            {
                
            int len = sizeof(A);
                printf(
            "sizeof(A)=%d\n", len);    // len = 11
            }

            posted @ 2005-12-13 14:36 冰凍熱狗 閱讀(13207) | 評論 (9)編輯 收藏

            用CHttpFile實現簡單的GET/POST數據

            一、GET 數據,下載網頁,文件等,用于可下載的文件,不能用于服務端運行的程序,比如.aspx文件等,否則會返回500錯誤。
            CString strSentence, strWriteName="1.htm";
                CString strFileName
            ="http://localhost/InDesign/" + strWriteName;

                CInternetSession sess;
                CHttpFile
            * fileGet;
                
            try
                
            {
                    fileGet
            =(CHttpFile*)sess.OpenURL(strFileName);
                }

                
            catch(CException* e)
                
            {
                    fileGet 
            = 0;
                    
            throw;
                }
                

                
            if(fileGet)
                
            {
                    DWORD dwStatus;
                    DWORD dwBuffLen 
            = sizeof(dwStatus);
                    BOOL bSuccess 
            = fileGet->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwBuffLen);

                    
            if( bSuccess && dwStatus>= 200&& dwStatus<300 ) 
                    

                        CStdioFile fileWrite; 
                        
            if(fileWrite.Open(strWriteName, CFile::modeWrite|CFile::modeCreate))
                        

                            
            while(fileGet->ReadString(strSentence))
                            
            {
                                fileWrite.WriteString(strSentence
            +"\n");
                            }

                            fileWrite.Close();
                            AfxMessageBox(
            "下載完畢");
                        }

                        
            else
                        
            {
                            AfxMessageBox(
            "本地文件"+strWriteName+"打開出錯."); 
                        }

                    }

                    
            else 
                    
            {
                        strSentence.Format(
            "打開網頁文件出錯,錯誤碼:%d", dwStatus);
                        AfxMessageBox(strSentence);
                    }

                    fileGet
            ->Close();
                    delete fileGet;
                }

                
            else
                    AfxMessageBox(
            "不能找到網頁文件!");

                sess.Close();

            二、POST 數據,比如用于提交注冊信息等
            CString strHttpName="http://localhost/TestReg/RegForm.aspx"// 需要提交數據的頁面
                CString strFormData = "username=abc&password=123";    // 需要提交的數據

                CInternetSession sess;
                CHttpFile
            * fileGet;
                CString strHeaders 
            = _T("Content-Type: application/x-www-form-urlencoded"); // 請求頭

                
            try
                
            {
                    fileGet
            =(CHttpFile*)sess.OpenURL(strHttpName);//打開文件
                }

                
            catch(CException* e)
                
            {
                    fileGet 
            = 0;
                    
            throw;
                }


                CString strSentence, strGetSentence 
            = "";
                
            if(fileGet)
                
            {
                    DWORD dwStatus;
                    DWORD dwBuffLen 
            = sizeof(dwStatus);
                    BOOL bSuccess 
            = fileGet->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwBuffLen);
                    
            if( bSuccess && dwStatus>= 200 &&dwStatus<300 )
                    

                        BOOL result 
            = fileGet->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
                        
            while(fileGet->ReadString(strSentence))    // 讀取提交數據后的返回結果
                        {
                            strGetSentence 
            = strGetSentence + strSentence + char(13+ char(10);
                        }

                        AfxMessageBox(strGetSentence); 
            // 顯示返回網頁內容
                    }

                    
            else 
                    
            {
                        strSentence.Format(
            "POST出錯,錯誤碼:%d", dwStatus);
                        AfxMessageBox(strSentence);
                    }

                    
                    fileGet
            ->Close();
                    delete fileGet;
                }

                
            else
                    AfxMessageBox(
            "不能找到網頁文件!");

                sess.Close();

            posted @ 2005-12-06 00:19 冰凍熱狗 閱讀(22569) | 評論 (6)編輯 收藏

            VB.NET編程日記

            1、FOR循環的郁悶
            VB.NET中的FOR循環中改變了界限的數值,還只是記住原來的界限,考慮以下程序,是把一個字符串中的非字母去掉:
             1        Dim ss As String = "Gogo No Kocha (Milk Tea) (500ml) - Small"
             2        Dim pos2 As Integer = ss.Length
             3        Dim i As Integer
             4        Dim ch As Char
             5        For i = 0 To pos2 - 1
             6            If i >= pos2 - 1 Then Exit For
             7            ch = ss.Chars(i)
             8            If ch.IsLetter(ch) = False And ch <> " " Then
             9                ss = ss.Remove(i, 1)
            10                i -= 1
            11                pos2 -= 1
            12            End If
            13        Next
            14        ss = "Gogo No Kocha Milk Tea ml  Small"
            如果不加上第6行,會死得很慘。

            posted @ 2005-12-03 00:21 冰凍熱狗 閱讀(425) | 評論 (0)編輯 收藏

            讀取硬盤物理序列號

            WINNT下實現的,WIN98下不行,網上搜索了一通,高人給出WIN98下的實現代碼要用到匯編,還要取得Ring0級別的控制權,狂暈~~~偶畢業后就把匯編還給老師了,還是老老實實用C++代碼吧。具體的C++和匯編源碼可以在此找到:http://www.cz88.net/2004/7-7/235257.htm

             

            讀取硬盤物理序列號有什么用?用來對軟件加密最好了,別告訴我你是用C盤的邏輯序列號來加密的,那個冬冬可是可以用程序改的。不過聽說現在連硬盤的物理序列號也可以改,不知道怎么才能改呢,高人指點一下。這個程序主要是針對有序列號的IDE HDD而言, 對于沒有序列號或SCSI HDD硬盤則無能為力,這是其局限性。

             

            實現原理:

            1、  CreateFile可以打開物理設備和串口等,使用CreateFile("\\\\.\\PHYSICALDRIVE0",…)打開硬盤,其中的00-255,視乎有幾個硬盤了。

            2、  使用DeviceIoControl函數對打開的設備進行通信,發送指定命令,根據返回的PSENDCMDOUTPARAMS結構,得到物理序列號和模型號,把物理序列號和模型號格式化為一定的格式輸出。
            DiskInfo.jpg

            順便把各個邏輯驅動器的信息也讀取一下,包括卷標,驅動器類型和邏輯序列號等。主要是用GetLogicalDriveStrings和GetVolumeInformation和GetDriveType幾個API。圖示是偶的機器上的結果。
            程序:diskinfo.zip

            posted @ 2005-12-01 02:23 冰凍熱狗 閱讀(29282) | 評論 (43)編輯 收藏

            服務端調試 Web Service 的辦法【轉貼】


            把本地調試好的服務上傳到WEB空間去試試,可以訪問,調試看看,恩?“The test form is only available for requests from the local machine”怎么回事,找找,原來是這樣。。。

            通過編輯 Web 服務所在的 vroot 的 Web.config 文件,可以啟用 HTTP GET 和 HTTP POST。以下配置同時啟用了 HTTP GET 和 HTTP POST:

            <configuration>
                <system.web>
                <webServices>
                    <protocols>
                        <add name="HttpGet"/>
                        <add name="HttpPost"/>
                    </protocols>
                </webServices>
                </system.web>
            </configuration>

            或者,可以通過編輯 Machine.config 中的 <protocols> 節為計算機上的所有 Web 服務啟用這些協議。下面的示例啟用了 HTTP GET、HTTP POST 及 SOAP,此外還從本地主機啟用了 HTTP POST:

            <protocols>
            <add name="HttpSoap"/>
            <add name="HttpPost"/>
            <add name="HttpGet"/>
            <add name="HttpPostLocalhost"/>
                  <!-- Documentation enables the documentation/test pages -->
            <add name="Documentation"/>
            </protocols>

            posted @ 2005-11-30 14:40 冰凍熱狗 閱讀(1081) | 評論 (0)編輯 收藏

            取本機IP地址和網卡號

            界面如下,主要是使用Winsock的一些東東取機器名和IP地址,取網卡就麻煩些,需要發送Netbios命令,需要注意的是需要包含winsock2.hnb30.h,并且要引入兩個lib
            GetIPName.jpg

            包含頭和lib如下:
            #include<winsock2.h>
            #include 
            <nb30.h>
            #pragma comment(lib, 
            "netapi32.lib")
            #pragma comment(lib, 
            "Wsock32.lib")

            具體的實現參考源程序。

            源程序下載:http://m.shnenglu.com/Files/edog/GetIPName.rar


            根據shootingstars 的指點,編寫了一下用 Iphlpapi 取IP地址的代碼,可以取本機IP,網關IP,子網掩碼,網卡名字等,需要在VC7上編譯:

            #include "stdio.h" 
            #include 
            "windows.h" 
            #include 
            "Iphlpapi.h" 
            #pragma comment(lib, 
            "Iphlpapi.lib"
            void main() 

            IP_ADAPTER_INFO pAdapterInfo; 
            ULONG len 
            = sizeof(pAdapterInfo); 

            if(GetAdaptersInfo(&pAdapterInfo, &len) != ERROR_SUCCESS) 

            printf(
            "GetAdaptersInfo ERROR!\n"); 
            }
             
            else 

            printf(
            "AdapterName: %s\n", pAdapterInfo.AdapterName); 
            printf(
            "Description: %s\n", pAdapterInfo.Description); 
            printf(
            "IP Address : %s\n", pAdapterInfo.IpAddressList.IpAddress.String); 
            printf(
            "IP Mask : %s\n", pAdapterInfo.IpAddressList.IpMask.String); 
            printf(
            "Gateway IP : %s\n", pAdapterInfo.GatewayList.IpAddress.String); 
            }
             
            }
             

            輸出結果如下: 
            AdapterName: 
            {475CB3CA-3478-415A-86D8-7E5982306F58} 
            Description: D
            -Link DFE-530TX PCI Fast Ethernet Adapter (rev.C) 
            IP Address : 
            192.168.168.23 
            IP Mask : 
            255.255.255.0 
            Gateway IP : 
            192.168.168.10 

            posted @ 2005-11-30 01:13 冰凍熱狗 閱讀(13427) | 評論 (15)編輯 收藏

            文件改名小程序

            很久以前寫的一個小程序,為了自己工作的方便。以前工作要用到一些工程代碼,結構是固定的,又不能使用VC來建立工程,只好每次做一個新的程序都拿原來的程序工程改名,然后再用UltraEdit等打開每個源文件再改字符串,比較簡單實用,用來改代碼工程正好。

            下載:http://m.shnenglu.com/Files/edog/ChangeName.rar
             

            一、             程序介紹

            使用基本的對話框程序,界面如下,通過選擇目錄,把其中的文件列出,輸入需要修改的名字和修改后的名字,然后按“轉換”按鈕即可。

            ChangeName.jpg


            一、             程序結構

            1、  主要使用了一個PathDialog的類,用來選擇目錄,是網上找的。

            2、  選擇了目錄后,使用CListBoxDir函數把文件列舉出來,省略了用FindFile去找文件的麻煩:)

            3、  轉換時從ListBox讀取每個文件,再根據源字符串和目標字符串,使用rename函數改名,要記住加上文件的路徑。

            完成改名后重新列舉文件到ListBox,一切OVER

            posted @ 2005-11-30 00:52 冰凍熱狗 閱讀(1703) | 評論 (4)編輯 收藏

            今天申請的空間

            今天申請的空間,竟然要審核,不知道使用起來效果如何。不過能上傳圖片和文件,可以貼上一些源代碼供大家研究,這一點就比較貼心。

            posted @ 2005-11-29 23:38 冰凍熱狗 閱讀(116) | 評論 (0)編輯 收藏

            僅列出標題
            共2頁: 1 2 
            久久精品国产免费观看 | 国产亚洲成人久久| 亚洲国产精品人久久| 91精品婷婷国产综合久久| 久久精品中文字幕有码| 国内精品伊人久久久影院| 影音先锋女人AV鲁色资源网久久 | 久久综合九色欧美综合狠狠 | 久久国产精品波多野结衣AV| 国产福利电影一区二区三区,免费久久久久久久精 | 精品国产乱码久久久久久呢 | 精品人妻伦一二三区久久| 久久久国产99久久国产一| 久久99国产精品久久| 国产精品美女久久福利网站| 无码人妻精品一区二区三区久久久 | 日产精品久久久久久久性色| 国产亚州精品女人久久久久久 | 久久综合狠狠综合久久综合88| 久久亚洲国产午夜精品理论片| 久久国产色av免费看| 人妻系列无码专区久久五月天| 99久久国语露脸精品国产| 国产精品久久久久a影院| 久久久久久一区国产精品| 2021少妇久久久久久久久久| 欧美亚洲国产精品久久高清 | 一本色道久久88综合日韩精品| 久久福利青草精品资源站免费| 亚洲午夜久久久久妓女影院| 久久伊人中文无码| 婷婷久久综合| 久久亚洲中文字幕精品一区| 国产精品无码久久综合网| 久久综合九色综合精品| 欧美亚洲国产精品久久蜜芽| 精品蜜臀久久久久99网站| avtt天堂网久久精品| av午夜福利一片免费看久久 | 亚洲国产成人久久综合一区77| 国产精品成人久久久久三级午夜电影|