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

            我住包子山

            this->blog.MoveTo("blog.baozishan.in")

            #

            哀悼日

            圖片來自Google

            國 務 院 公 告

            逝者安息,生者堅強

            posted @ 2008-05-19 12:39 Gohan| 編輯 收藏

            GWeekly[16] = 關于未來,一切都是未知

            Don't be afraid!!

               過去的一周對于我仍然是平淡的一周,但是對于許多許多受到地震災難傷害的人,對于中國,這是難忘難熬的一周。5.12的7.8級地震,加上今天凌晨的6級地震,給不少人帶來痛苦,傷害。地震這個東西很難預知,又有誰能夠正確的預測未來呢?商周時的西伯侯會算算卦,可是妲己帶來的災禍他大概也沒算到。周四,我們派對的學習活動,看了復興之路的前兩集,許多革命者讓我敬佩,尤其是孫中山,看過他的一些精彩的演講文。未來太多未知,就像happy tree friend里的那些短片,事件有時候來的那么突然,不要害怕,樂觀面對,克服困難,如果hp掉光了,那也許不是結束 而是新的開始。豆瓣上有人轉發了一篇哀悼貼,為作者感到同情,同時佩服作者的堅強。

               這周仍然是隨便看看技術書籍,認識了blankyao,關注web開發的同齡朋友,對于Hook做了一些小小的學習,實踐日志也發在博客上了。下一段時間可能不能把時間都放在這方面了,考試逼近,考研的復習也沒有開始。不過還是學習技術優先級高些,還是慢慢積累經驗。兄弟去做IBM的實習生面試沒時間,替他做了個迅雷實習生的C++在線題目,頭一次做這類題目,覺得題目比較冗繁,不少題目本身都有些錯誤,題目出的不夠仔細。今天半天在做算法導論課程的上機作業,發現vc8的STL的堆算法和優先隊列好像對于結構體指針的操作有點問題,debug版會提示異常,以后有空再深入學習吧。

               本周收藏:

            snapshot20080519001953

               本周看了一個叫做Mind Game的動畫,大部分沒看懂,關于過去和未來以及幻想的動畫,三體這本有趣的科幻小說看了一大半。未來的你我世界對我來講是都個未知,勇敢面對,勇敢前進吧,正如右圖這個圖書館戰爭的ED曲changes,食指所指的是未來。迎接未來,擁抱變化。愿災難就此結束,期待明天。明天能看到★★嗎?

             

            寫完這些發現“明天”已經到了,so。。下周(或者這周)再接著回顧了。

            posted @ 2008-05-19 00:39 Gohan 閱讀(294) | 評論 (2)編輯 收藏

            向Vista學習,實現XP下重命名文件忽略選取擴展名

            image   這兩天對于HOOK的技術有了一個入門的學習,用過vista的同學會發現vista重命名一個文件比如vista.exe,他會自動選中vista忽略掉擴展名,帶來比較方便的用戶體驗,學了一些hook我也想試試xp下能不能做這樣的事情。于是參考一些文章,勉強實現了,有一點兒缺陷(請看最后)。

               經過觀察我發現重命名時,資源管理器會向他的子窗口listview發送一個LVM_EDITLABELA的控制消息,所以我使用了WH_CALLWNDPROCRET類型的全局掛鉤,這個掛鉤可以在sendmessage結束以后處理傳送和返回的數據。發送了LVM_EDITLABELA消息后,會在lParam得到一個編輯窗口的句柄,只需之后對這個窗口發送EM_SETSEL控制消息就能夠改變重命名時候的高亮區域。hook回調函數如下:

               1: static LRESULT CALLBACK msghook(UINT nCode, WPARAM wParam, LPARAM lParam)
               2: {
               3:     if(nCode < 0)
               4:     {
               5:         CallNextHookEx(hook,nCode,wParam,lParam);
               6:         return 0;
               7:     }
               8:     LPCWPRETSTRUCT msg = (LPCWPRETSTRUCT) lParam;
               9:     if(msg->message == LVM_EDITLABELA || msg->message == LVM_EDITLABELW)
              10:     {
              11:         GetClassName(msg->hwnd,className,255);
              12:         GetWindowText(msg->hwnd,wndName,255);
              13:         if(0==_tcscmp(className,_TEXT("SysListView32")))
              14:         {
              15:             if(0==_tcscmp(wndName,_TEXT("FolderView")))
              16:             {
              17:                 hEditWnd = (HWND)msg->lResult;
              18:                 GetWindowText(hEditWnd,className,255);//暫時放入className
              19:                 SendMessage(hEditWnd,EM_SETSEL,0,findDot(className));
              20:             }
              21:         }
              22:     }
              23:     return CallNextHookEx(hook,nCode,wParam,lParam);
              24: }

             

            className與wndName是兩個TCHAR數組,從hwnd獲取信息存在那里進行判斷是否為Shell中的listview,避免在其它使用listview的應用程序里會進行之后的處理。

               工程文件下載,點這里

               程序下載,點這里

               使用方法,編譯以后直接運行GRnamer就可以,如果不想用了,從任務管理器把它關閉,沒有做trayicon之類的東西,因為只是個demo。

            image   最后說一下缺陷,缺陷就是這樣做沒有辦法判斷文件與文件夾的區別,所以會有如圖的效果,我自己沒有想到解決的方法,請達人們指點。:)

             

               參考的文章:

            msdn Hooks hook的全部參考

            codeproject Hooks and DLLs 我的hook dll都是照著它寫的。

            posted @ 2008-05-17 02:05 Gohan 閱讀(3016) | 評論 (17)編輯 收藏

            為震區同胞祈福!

               昨天下午在西安也有幾分鐘的震感,事后知道這場震級里氏7.8級的地震發生在了我國四川汶川,我在這里為喪生于這場災難的近萬名同胞哀悼了,衷心希望災區的同胞們平安脫險!!

            相關鏈接 

            上蒼保佑所有的人們!


            http://review.feedsky.com/review/feedsky/gohan/~/txt/171/r.html

            posted @ 2008-05-13 21:05 Gohan 閱讀(308) | 評論 (1)編輯 收藏

            GWeekly[15] 無面人

            image   平常的一周,這周課程不多,編譯原理講了感覺不到一半可能就快要結課了,有點可惜。學的東西不多,寫huffman編碼的練習,用了C++有關的文件流。這周六學校停電,出去買書,想買老六寫的記憶碎片歌唱80年代,聽說還不錯,可惜沒找到,捧了本ATL internal 2nd的中文版,想買代碼之美中文版,結果老板推薦給我一本編程之美,看了幾眼,也捧了回去。讀書的堆棧還是要不斷更新的。這周閱讀不多,只是了解了些HMAC-SHA的內容,學了一個自適應huffman的代碼,讀那本atl internal,收拾桌面,書架,很累很累,沒做完的事兒很多,云風的那個回憶故事還沒看全,還要寫點東西。

               看了幾部動畫,宮崎駿的千與千尋魔女宅急便,覺得自己一個人傻傻的有點像那個無面人。發現圖書館戰爭里的開場結尾曲很不錯。

               本周收藏

              本周回顧就是這些,今天是母親節,再次祝媽媽節日快樂。累了,睡去。

            posted @ 2008-05-11 23:25 Gohan 閱讀(511) | 評論 (2)編輯 收藏

            讓VS2005中的fstream支持中文路徑文件打開

               前幾天發了這篇《用fstream對二進制文件的讀寫》,有朋友指出了VS2005的fstream對于中文路徑支持不好的bug。我想大概是因為VS2005更加重視了對字符串的全球化支持,所以鼓勵我們使用unicode編碼的字符串,對于MBCS之類的支持可能就疏忽了吧。

               我搜索了一下這個問題的解決,參考了如下資料寫了演示代碼。

               我綜合了以上的內容,總結了3種方法,能夠較好解決大家的困擾,包括可能無法使用cout的問題。

               1: /********************************************************************
               2:     created:    2008/05/10
               3:     created:    10:5:2008   23:56
               4:     filename:     k:\sj\fstreamTest\fstreamTest\main.cpp
               5:     file path:    k:\sj\fstreamTest\fstreamTest
               6:     file base:    main
               7:     file ext:    cpp
               8:     author:        Gohan
               9: *********************************************************************/
              10: #include <tchar.h>
              11: #include <fstream>
              12: #include <iostream>
              13: using namespace std;
              14: int main()
              15: {
              16:     /************************************************************************/
              17:     /* 方法1,使用_TEXT()宏定義將字符串常量指定為TCHAR*類型                 */
              18:     /* 如果是我,首選此類型                                                 */
              19:     /************************************************************************/
              20:     fstream file;
              21:     file.open(_TEXT("c:\\測試\\測試文本.txt"));
              22:     cout<<file.rdbuf();
              23:     file.close();
              24:  
              25:     /************************************************************************/
              26:     /* 方法2,使用STL中的locale類的靜態方法指定全局locale                   */
              27:     /* 使用該方法以后,cout可能不能正常輸出中文,十分蹊蹺                    */
              28:     /* 我發現了勉強解決的方法:不要在還原區域設定前用cout或wcout 輸出中文   */
              29:     /* 否則后果就是還原區域設定后無法使用cout wcout輸出中文                 */
              30:     /************************************************************************/
              31:     locale::global(locale(""));//將全局區域設為操作系統默認區域
              32:     file.open("c:\\測試\\測試文本2.txt");//可以順利打開文件了
              33:     locale::global(locale("C"));//還原全局區域設定
              34:     cout<<file.rdbuf();
              35:     file.close();
              36:  
              37:     /************************************************************************/
              38:     /* 方法3,使用C函數setlocale,不能用cout輸出中文的問題解決方法同上      */
              39:     /************************************************************************/
              40:     setlocale(LC_ALL,"Chinese-simplified");//設置中文環境
              41:     file.open("c:\\測試\\測試文本3.txt");//可以順利打開文件了
              42:     setlocale(LC_ALL,"C");//還原
              43:     cout<<file.rdbuf();
              44:     file.close();
              45: }
              補充一下,第一種方法,如果不是靜態字符串當作路徑的話,記得傳入TCHAR*類型字符串作為路徑,應該就沒問題了。image
             

            posted @ 2008-05-11 01:30 Gohan 閱讀(9328) | 評論 (5)編輯 收藏

            用fstream對二進制文件的讀寫

            這里介紹使用fstream這個類完成這個任務,fstream在輸入輸出方面比較全能。

            操作系統通過二進制文件格式存儲大量文件。一般不指定二進制文件操作的I/O操作是面向文本的,用來讀寫特定編碼的文本。本文介紹用C++的fstream類讀寫二進制文件。

            讀寫數據以這個WebSite結構體為例

                    // Struct for C++ File I/O binary file sample

               1: struct WebSites
               2: {
               3:      char SiteName[100];
               4:      int Rank;
               5: };

            寫操作

                注意事項

            • 要寫的文件需要用到輸出模式標志 ios::out和二進制操作模式標志ios::binary。
            • write()函數需要兩個參數.第一個參數是char*類型用來指定需要寫入的數據, 第二個參數是int類型指定寫入多少個字節.
            • 最后記得要用close()結束.

                    // Sample for C++ File I/O binary file write

               1: void write_to_binary_file(WebSites p_Data)
               2: {
               3:     fstream binary_file("c:\\test.dat",ios::out|ios::binary|ios::app); 
               4:     binary_file.write(reinterpret_cast<char *>(&p_Data),sizeof(WebSites));
               5:     binary_file.close();
               6: } 

            上面的例子把一個WebSites的對象追加進了c:\test.dat之中,ios::app是追加方式操作文件的標志。

            上面的write函數,需要第一個參數為char*類型,所以用 reinterpret_cast轉換將這個對象地址轉換成char*類型.

            讀操作

               跟上面的操作流程類似. 唯一不同在于使用輸入模式標志ios::in, 使用read()方法.

                    // Sample for C++ File I/O binary file read

               1: void read_from_binary_file()
               2: {
               3:     WebSites p_Data;
               4:     fstream binary_file("c:\\test.dat",ios::binary|ios::in);
               5:     binary_file.read(reinterpret_cast<char *>(&p_Data),sizeof(WebSites));
               6:     binary_file.close();
               7:     cout<<p_Data.SiteName<<endl;
               8:     cout<<"Rank :"<< p_Data.Rank<<endl;
               9: } 

            本文只是關于文件io流的一些基礎介紹,一些高級操作比如seek,檢查文件指針的有效性等等,也是需要學習的,這里就不多說了。

            文章來源  我只是做一個簡短的翻譯

            posted @ 2008-05-09 14:41 Gohan 閱讀(22855) | 評論 (10)編輯 收藏

            GWeekly[14] = 五一短假

            最近在看的動畫    本周上課3天便碰到了五一,這次短假如同上次的清明長假,勞動光榮,我懶惰得有點慚愧,呆屋3天反省。話說5月1日前一陣被一個叫做Daniel的家伙定為RSS日,RSS很好,高中時候我看很多電腦雜志,用過單機RSS閱讀器,可惜那時候feed不多,去年開始用Google在線閱讀器,感覺良好,上月有兩天google訪問變得很慢,試用了鮮果,發現雖然鮮果的快捷鍵大多學習了Google,但它每篇文章都有推薦數作為參考,可以較快忽略一些不重要的內容,還有分頁顯示,著實不錯,而且好友功能比較顯眼(這個我覺得無所謂),只是像Google這樣用純鍵盤閱讀鮮果的支持就差一些,還是不夠方便,現在覺得還是google稍微方便點,希望Google也去學學鮮果,做的盡善盡美。放假期間看了一點Win shell編程的電子書,看完了那本王濤的.NET須知,以前的ACM隊友還在努力學習算法,我卻有點在這方面荒廢,圖論部分尤其是網絡流至今仍未通曉,打算今后時常讀讀算法導論。

               放假要好好放松身心,云風在閑暇時回憶往事,很向往他那會的經歷,只是自己相對他不知荒廢了多少,要努力抓住現在。這周看了一下豆瓣的API文檔,提供了方便的功能,我還需要些基本知識,收集如下,有時間也可以玩這個API的應用。image

              這周游戲了不少,三國11稱霸模式玩了5關,與同學Dota若干局,一個類似之前的蠟筆物理學的游戲Magic Pen。五一看了很多老電影,臥虎蒼龍,拳霸,冬陰功,預見未來

            本周收藏

            這周就到這里,下周繼續。

            posted @ 2008-05-05 07:54 Gohan 閱讀(324) | 評論 (0)編輯 收藏

            獲取給定路徑的圖標,演示SHGetFileInfo用法

            建立的仍然是Win32 命令行的工程,所以入口點為main(),需要手動獲取HINSTANCE結構。程序在WINXP+VS2005測試通過image
            /********************************************************************
              created:  2008/05/02
              created:  2:5:2008   3:40
                        main.cpp
              author:    Gohan
              purpose:  演示SHBrowseForFolder用法
                        演示SHGetFileInfo獲取路徑圖標   
                        演示Picture Box在SDK里的使用方法
            *********************************************************************/
            #include <Windows.h>
            #include <ShlObj.h>
            #include "resource.h"
            HICON g_icon;
            RECT g_rect;
            TCHAR g_path[MAX_PATH];
            void OnInitDlg(HWND hwnd)
            {
               
            GetWindowRect(GetDlgItem(hwnd, IDC_ICON1), &g_rect);
               
            MapWindowPoints(NULL, hwnd, (LPPOINT) &g_rect, 2);
               
            DestroyWindow(GetDlgItem(hwnd, IDC_ICON1));
               
            SetDlgItemText(hwnd,IDC_PATH,g_path);
            }
            void OnPaint(HWND hwnd)
            {
               
            PAINTSTRUCT ps;
               
            HDC hdc = BeginPaint(hwnd, &ps);
               
            DrawIcon(hdc,g_rect.left,g_rect.left,g_icon);
               
            EndPaint(hwnd,&ps);
            }
            BOOL CALLBACK DlgProc (HWND hDlg, UINT message,
                                       
            WPARAM wParam, LPARAM lParam)
            {
               
            switch (message)
                {
               
            case WM_INITDIALOG :
                   
            OnInitDlg(hDlg);
                   
            return TRUE ;
               
            case WM_PAINT:
                   
            OnPaint(hDlg);
                   
            return TRUE;
               
            case WM_COMMAND :
                   
            switch (LOWORD (wParam))
                    {
                   
            case IDOK :
                   
            case IDCANCEL :
                       
            EndDialog (hDlg, 0) ;
                       
            return TRUE ;
                    }
                   
            break ;
                }
               
            return FALSE ;
            }
            int main()
            {
               
            HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(NULL);
               
            BROWSEINFO bi;
               
            ZeroMemory(&bi,sizeof(BROWSEINFO));
               
            LPMALLOC pMalloc;
               
            LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
               
               
            if(pidl != NULL)
                {
                   
            SHGetPathFromIDList(pidl,g_path);
                   
            SHFILEINFO sfi;
                   
            ZeroMemory(&sfi,sizeof(SHFILEINFO));
                   
            SHGetFileInfo(g_path,0,&sfi,sizeof(SHFILEINFO),SHGFI_ICON);
                   
            g_icon = sfi.hIcon;
                   
            DialogBox (hInstance, MAKEINTRESOURCE(IDD_DIALOG1), 0, DlgProc) ;
                   
            //MessageBox(NULL,path,TEXT("Choose"),MB_OK);
                    if(SUCCEEDED(SHGetMalloc(&pMalloc)))
                    {
                       
            pMalloc->Free(pidl);
                       
            pMalloc->Release();
                    }
                }
               
            else
                {
                   
            MessageBox(NULL,TEXT("),TEXT("Choose"),MB_OK);
                }
            }
            /************************************************************************/
            /* resource.h                                                           */
            /************************************************************************/
            #define IDD_DIALOG1                     101
            #define IDC_PATH                        1001
            #define IDC_ICON1                       1002
            /************************************************************************/
            /* demo.rc Microsoft Visual C++ generated resource script.              */
            /************************************************************************/
            #include "resource.h"
            #include "afxres.h"
            /////////////////////////////////////////////////////////////////////////////
            //
            // Dialog
            //

            IDD_DIALOG1 DIALOGEX 0, 0, 126, 83
            STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP
            FONT
            8, "MS Shell Dlg", 400, 0, 0x1
            BEGIN
                DEFPUSHBUTTON   "確定",IDOK,69,7,50,14
               
            PUSHBUTTON      "取消",IDCANCEL,69,24,50,14
               
            CONTROL         "",IDC_ICON1,"Static",SS_WHITEFRAME | SS_REALSIZEIMAGE,13,10,20,20,WS_EX_TRANSPARENT
                LTEXT           "靜態",IDC_PATH,14,44,89,21,0,WS_EX_CLIENTEDGE
            END


            /////////////////////////////////////////////////////////////////////////////

            posted @ 2008-05-02 04:54 Gohan 閱讀(7774) | 評論 (2)編輯 收藏

            GWeekly[13] = 宅們,不要輕生

            o_InsideDotNetBook_Logo

               前幾天看到和邪社又一個悲哀的宅,的確很悲哀,年輕的生命被自我終結了。遇到了再大的挫折,還應該看到希望,看看這兩個鏈接,兩條腿特立獨行的狗沒有肢體的人生,生物的能力可以是超乎想象的,只要你有你的faith。這個悲哀的宅也給我提了個醒,雖然我也算宅,不過還是重視周圍的生活的,這周和同學兩天中打了快四十局乒乓球,早起跟寢室同學打了回籃球,周末去看了少兒勵志片功夫之王,挺不錯的,買了這本《你必須知道的.NET》作為前幾天讀書節送給自己的禮物。本周隨便看了看Windows Shell Programming的一部分,寫java上機作業,還玩了10個小時MARSWOW,玩的時候感覺回到了高考復習的那會兒,這次玩完有點后悔,因為看了大學生的游戲生活。昨天是媽媽生日,這里祝愿媽媽永遠健康快樂。這周在技術方面小小研究了一下.Net的RTFBox控件,準備實現一個RTFtoHTML的程序,以后好方便的貼一些code。

            本周收藏:

            這周聽汪峰那首明天,感覺不錯,希望現在不好的事兒明天會變好,好的事兒明天更好,相信明天。

            posted @ 2008-04-27 23:25 Gohan 閱讀(277) | 評論 (0)編輯 收藏

            僅列出標題
            共16頁: First 4 5 6 7 8 9 10 11 12 Last 
            亚洲国产精品一区二区三区久久| 色综合久久久久网| 中文字幕精品久久久久人妻| 久久福利资源国产精品999| 亚洲国产精品久久久天堂| 俺来也俺去啦久久综合网| 国产精品无码久久久久| 国产精品久久久久久久久软件| 久久国产精品一国产精品金尊 | 精品永久久福利一区二区| 久久国产美女免费观看精品| 亚洲精品无码成人片久久| 久久精品一区二区三区中文字幕| 99精品久久久久久久婷婷| 国产成人香蕉久久久久| 精品蜜臀久久久久99网站| 亚洲精品午夜国产va久久| 狠狠色丁香婷综合久久| 久久天天躁夜夜躁狠狠躁2022| 国产成人99久久亚洲综合精品| 久久精品国产亚洲AV影院| 久久久久99精品成人片三人毛片 | 欧美日韩中文字幕久久伊人| 国产精品久久久久免费a∨| 精品久久久久久久中文字幕| 国产精品久久久久AV福利动漫| 国产精品久久久久久久人人看| 久久久久亚洲精品天堂久久久久久| 久久精品国产亚洲av高清漫画| 久久成人小视频| 99久久国产精品免费一区二区 | 激情伊人五月天久久综合| 亚洲欧美另类日本久久国产真实乱对白| 久久99毛片免费观看不卡| 国产69精品久久久久777| 婷婷久久香蕉五月综合加勒比| 精品国产日韩久久亚洲| 久久天天躁夜夜躁狠狠躁2022| 亚洲国产成人久久精品99| 怡红院日本一道日本久久| 久久这里只有精品久久|