• <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>
            posts - 25,  comments - 36,  trackbacks - 0
            這幾天學習了一下鉤子的知識。
            看的是孫鑫的視頻,孫鑫的視頻真的是經典。
            但個人不認為他不是MFC的原理講解的好視頻。不過貌似現在也沒有講MFC原理很好的書。
            主要是MFC 復雜性吧。
            不過簡單把整體思想學習一下 臺灣的侯捷 確實強悍的一本書(主要是第三章模擬MFC 原理)
            .
            這個程序貌似貌似百度文庫有類似的程序,但試了一下貌似不可以。
            如是我重寫了一下程序。
            簡單寫了一下。
            實現正確獲取對記事本的消息。--》如果你是不懂鉤子請看孫鑫的視頻。這篇文章不適合你。
            這里程序是DLL 里的代碼
            CMyNodeHook2.h
            #ifndef CMYNODEHOOK2
            #define CMYNODEHOOK2 _declspec(dllimport)
            #endif

            //這里我們用類
            class CMYNODEHOOK2 CMyNodeHook
            {
            public:
            void SetHook();
            void UnHook();
            ~CMyNodeHook();
            };
            CMyNodeHook2.cpp
            #define CMYNODEHOOK2 _declspec(dllexport)
            #include "CMyNodeHook2.h"
            //#include <windows.h>
            #include <stdio.h>
            #include <AFXWIN.H> //這里我添加了MFC DLL 的 你可以不是用CString 和 AFxMessageBox();改用原始 API
            #include <AFX.H> //即可
            //#include <afxwin.h>
            HHOOK g_hOOk = NULL;
            BOOL isStart = NULL;
            HINSTANCE g_hInst = FALSE; //全局函數
            int flag =1;

            LRESULT CALLBACK GetMsgProc(
            int nCode, // hook code
            WPARAM wParam, // removal option
            LPARAM lParam // message
            )
            {
            //函數名字可以改 但必須是這種格式化
            //我們看msdn 知道lparam是一個指針 指向CWPSTRUCT結構的指針
            //所以我們可以
            MSG *lpMsg;
            lpMsg = (MSG *)lParam;
            TCHAR szClass[256];
            memset(szClass,0,256);
            GetClassName(lpMsg->hwnd,szClass,255);

            if(0 == strcmp(szClass,"Edit")) //先判斷是否是否為CEidt窗口類
            {
            //MessageBox(0,szClass,0,0);

            HWND hWnd = GetParent(lpMsg->hwnd);

            GetClassName(hWnd,szClass,256);
            if(0==strcmp(szClass,"Notepad")) //再來判斷是否為Notepad窗口類
            {//這樣大概就可以判斷為記事本了
            if(lpMsg->message == WM_CHAR ) //判斷是否按下鍵
            {
            CString s;
            s.Format("你按的鍵是 %c",lpMsg->wParam);//這里你只是對一個按鍵消息,要對組合鍵 就要對lparam進行操作
            //具體可以參考MSDN
            AfxMessageBox(s);
            return 1; //貌似GetMsgProc不能過濾掉消息,可能是自己才學 沒有學到吧。。測試了一下沒有成功
            }
            else
            return CallNextHookEx(g_hOOk,nCode,wParam,lParam);
            }
            else
            return CallNextHookEx(g_hOOk,nCode,wParam,lParam);
            }
            else
            return CallNextHookEx(g_hOOk,nCode,wParam,lParam);

            }
            void CMyNodeHook::SetHook()
            {
            g_hInst = GetModuleHandle("CMyNodeHook2");
            g_hOOk = SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,g_hInst,0);//使用這種方法獲取 模塊句柄
            if(NULL == g_hOOk)
            {
            MessageBox(0,"創建鉤子失敗",0,0);
            exit(1);
            }
            isStart = TRUE;
            }
            void CMyNodeHook::UnHook()
            {
            if(isStart)
            {
            UnhookWindowsHookEx(g_hOOk);
            isStart = FALSE;
            MessageBox(0,"成功釋放鉤子",0,0);
            }
            else
            {
            MessageBox(0,"帥哥你還沒有放鉤子",0,0);
            }
            }
            CMyNodeHook::~CMyNodeHook()
            {
            UnHook();
            }
            posted on 2012-04-23 23:52 小魚兒 閱讀(736) 評論(0)  編輯 收藏 引用
            <2012年5月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿(4)

            隨筆檔案(25)

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            国产亚洲综合久久系列| 久久性生大片免费观看性| 久久夜色精品国产欧美乱| 久久精品无码一区二区WWW | 久久99热只有频精品8| 99久久精品国内| 久久国产亚洲精品| 久久久久人妻精品一区| 久久精品国产精品亜洲毛片| 日本强好片久久久久久AAA| 四虎国产精品免费久久5151 | 久久激情亚洲精品无码?V| 久久天天躁狠狠躁夜夜不卡| 大香网伊人久久综合网2020| 中文字幕乱码人妻无码久久| AAA级久久久精品无码区| 亚洲欧美日韩久久精品第一区| 国产精品欧美久久久久无广告| 久久精品国产亚洲av水果派| 久久午夜福利电影| 香蕉久久一区二区不卡无毒影院| 亚洲AV乱码久久精品蜜桃| 久久国产V一级毛多内射| 国产精品一久久香蕉国产线看观看 | 青青青青久久精品国产| 久久久久久亚洲AV无码专区| 亚洲国产日韩综合久久精品| 国产女人aaa级久久久级| 久久精品国产精品青草app| 人妻丰满AV无码久久不卡 | 四虎亚洲国产成人久久精品| 国产成人精品久久一区二区三区av | 日产精品99久久久久久| 亚洲AV日韩精品久久久久| 精品综合久久久久久98| 亚洲欧美成人久久综合中文网 | 久久久黄片| 人人狠狠综合久久亚洲高清| 成人国内精品久久久久影院VR| 久久se精品一区精品二区| 久久99国产精品久久99果冻传媒 |