亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++鍵盤記錄程序代碼

2020-01-26 15:13:48
字體:
來源:轉載
供稿:網友

本文實例講述了C++鍵盤記錄程序。分享給大家供大家參考。具體分析如下:

主程序如下:

就是基于對話框的框架,加個個OnHookKey函數,

復制代碼 代碼如下:
long CMainDialog::OnHookKey(WPARAM wParam, LPARAM lParam)   //處理自定義消息 

    char szKey[80]={0}; 
    GetKeyNameText(lParam, szKey, 80); 
    CString strItem; 
    strItem.Format("按鍵:%s/r/n", szKey); 
    CString strEdit; 
    GetDlgItem(IDC_KEYMSG)->GetWindowText(strEdit); 
    GetDlgItem(IDC_KEYMSG)->SetWindowTextA(strEdit+strItem); 
    ::MessageBeep(MB_OK); 
    return 0; 
}

在初始化時,調用DLL中的:
復制代碼 代碼如下:
SetKeyHook(TRUE, 0, m_hWnd)

在析構時,調用DLL中的:
復制代碼 代碼如下:
SetKeyHook(FALSE);

.cpp源文件代碼:

復制代碼 代碼如下:
#include <afxwin.h> 
#define  HM_KEY WM_USER+100 
//CMyApp 
class CMyApp:public CWinApp 

public: 
    BOOL InitInstance(); 
}; 
 
//CMyDialog 
class CMainDialog:public CDialog 

public: 
    CMainDialog(CWnd* pParentWnd = NULL); 
 
protected: 
    virtual BOOL OnInitDialog( ); 
    afx_msg void OnCancel(); 
    afx_msg long OnHookKey(WPARAM wParam, LPARAM lParam);  //處理自定義消息的聲明 
 
    DECLARE_MESSAGE_MAP() 
};

.h頭文件代碼:

復制代碼 代碼如下:
#include "resource.h" 
#include "KeyHookApp.h" 
#include "KeyHook.h" 
#pragma comment(lib,"KeyHook.lib") 
 
CMyApp theApp; 
 
BOOL CMyApp::InitInstance() 

    CMainDialog dlg; 
    m_pMainWnd = &dlg;   //給m_pMainWnd 主窗口 
    dlg.DoModal(); 
    return FALSE; //不進入消息循環 

 
BEGIN_MESSAGE_MAP(CMainDialog, CDialog) 
    ON_MESSAGE(HM_KEY, OnHookKey) //自定義消息 
END_MESSAGE_MAP() 
 
//CMainDialog 
CMainDialog::CMainDialog(CWnd* pParentWnd):CDialog(IDD_MAIN, pParentWnd)   
{   
 
}  
BOOL CMainDialog::OnInitDialog( ) 

    CDialog::OnInitDialog(); 
    if (!SetKeyHook(TRUE, 0, m_hWnd)) 
    { 
        MessageBox("安裝鉤子失敗"); 
    } 
     
    return TRUE; 

//處理關閉消息 
void CMainDialog::OnCancel() 

    OutputDebugString("oncancel"); 
    SetKeyHook(FALSE); 
    CDialog::OnCancel(); 
    return; 

long CMainDialog::OnHookKey(WPARAM wParam, LPARAM lParam)   //處理自定義消息 

    char szKey[80]={0}; 
    GetKeyNameText(lParam, szKey, 80); 
    CString strItem; 
    strItem.Format("按鍵:%s/r/n", szKey); 
    CString strEdit; 
    GetDlgItem(IDC_KEYMSG)->GetWindowText(strEdit); 
    GetDlgItem(IDC_KEYMSG)->SetWindowTextA(strEdit+strItem); 
    ::MessageBeep(MB_OK); 
    return 0; 
}

dll的代碼:
.cpp源文件代碼:

復制代碼 代碼如下:
// KeyHook.cpp : 定義 DLL 應用程序的導出函數。 
// 
 
#include "stdafx.h" 
#include "KeyHook.h" 
 
 
//共享數據段 
#pragma data_seg("YCIShared") 
HWND g_hWndCaller=NULL; //保存主窗口句柄 
HHOOK g_hHook = NULL; //保存鉤子句柄  
#pragma data_seg() 
// 這是導出變量的一個示例 
KEYHOOK_API int nKeyHook=0; 
 
// 這是導出函數的一個示例。 
KEYHOOK_API int fnKeyHook(void) 

    return 42; 

 
 
//通過內存得到模塊句柄的幫助函數 
HMODULE WINAPI ModuleFromAddress(LPVOID pv) 

    MEMORY_BASIC_INFORMATION  mbi; 
    if (0 != ::VirtualQuery(pv, &mbi, sizeof(MEMORY_BASIC_INFORMATION))) 
    { 
        return (HMODULE)mbi.AllocationBase; 
    } 
    else 
    { 
        return NULL; 
    } 

//鉤子處理函數 
LRESULT CALLBACK KeyboardProc( 
    __in  int code, 
    __in  WPARAM wParam, 
    __in  LPARAM lParam 
    ) 

    if (code<0||code==HC_NOREM) 
    { 
        return ::CallNextHookEx(g_hHook, code, wParam,lParam); 
    } 
    //如果重復消息,交給下一鏈 
    if (lParam & 0x40000000) 
    { 
        return ::CallNextHookEx(g_hHook, code, wParam,lParam); 
    } 
    //通知主窗口 
    ::PostMessageA(g_hWndCaller, HM_KEY, wParam, lParam); 
    return ::CallNextHookEx(g_hHook, code, wParam,lParam); 
     

//安裝和卸載鉤子函數 
BOOL KEYHOOK_API WINAPI SetKeyHook(BOOL bInstall, DWORD dwThreadId, HWND hWndCaller) 

    BOOL bRet = TRUE; 
    g_hWndCaller = hWndCaller; 
    if (bInstall) //安裝鉤子 
    { 
        g_hHook =::SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, ModuleFromAddress(KeyboardProc), dwThreadId); 
        bRet = (g_hHook != NULL); 
    } 
    else //卸載鉤子 
    { 
        ::UnhookWindowsHookEx(g_hHook); 
        g_hHook = NULL; 
    } 
    return bRet; 

// 這是已導出類的構造函數。 
// 有關類定義的信息,請參閱 KeyHook.h 
CKeyHook::CKeyHook() 

    return; 
}

.h頭文件代碼:

復制代碼 代碼如下:
// 下列 ifdef 塊是創建使從 DLL 導出更簡單的 
// 宏的標準方法。此 DLL 中的所有文件都是用命令行上定義的 KEYHOOK_EXPORTS 
// 符號編譯的。在使用此 DLL 的 
// 任何其他項目上不應定義此符號。這樣,源文件中包含此文件的任何其他項目都會將 
// KEYHOOK_API 函數視為是從 DLL 導入的,而此 DLL 則將用此宏定義的 
// 符號視為是被導出的。 
#ifdef KEYHOOK_EXPORTS 
#define KEYHOOK_API __declspec(dllexport) 
#else 
#define KEYHOOK_API __declspec(dllimport) 
#endif 
 
#define  HM_KEY WM_USER + 100 
// 此類是從 KeyHook.dll 導出的 
class KEYHOOK_API CKeyHook { 
public: 
    CKeyHook(void); 
    // TODO: 在此添加您的方法。 
}; 
 
extern KEYHOOK_API int nKeyHook; 
 
KEYHOOK_API int fnKeyHook(void); 
 
//聲明要導出的 
BOOL KEYHOOK_API WINAPI SetKeyHook(BOOL bInstall, DWORD dwThreadId=0, HWND hWndCaller=NULL);

.def代碼:

復制代碼 代碼如下:
EXPORTS 
    SetKeyHook 
SECTIONS 
    YCIShared  Read Write Shared

希望本文所述對大家的C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品中文字幕一区| 国产91精品久久久久| 亚洲国产女人aaa毛片在线| 亚洲免费电影一区| 国产欧美最新羞羞视频在线观看| 中文字幕在线看视频国产欧美| 国产成人在线视频| 国产人妖伪娘一区91| 日本国产欧美一区二区三区| 久久精品国产电影| 亚洲片av在线| 亚洲午夜av久久乱码| 亚洲精品一区av在线播放| 日韩人体视频一二区| 国产精品自产拍高潮在线观看| 久久激情五月丁香伊人| 欧美在线视频网站| 亚洲美女激情视频| 久久免费视频网站| 久久久久国产视频| 国产成人激情小视频| 亚洲成av人影院在线观看| 日韩精品视频在线| 日韩精品免费在线观看| 国产精品永久免费在线| 亚洲性猛交xxxxwww| 欧美在线视频免费观看| 亚洲色图狂野欧美| 91在线高清免费观看| 91理论片午午论夜理片久久| 亚洲free性xxxx护士白浆| 最新亚洲国产精品| 91国内免费在线视频| 亚洲开心激情网| 日韩一区二区久久久| 日韩激情第一页| 亚洲天堂av电影| 夜夜嗨av色综合久久久综合网| 亚洲欧洲激情在线| 久久99视频精品| 欧美黑人巨大精品一区二区| 欧美成人在线免费视频| 久久精品国产96久久久香蕉| 4k岛国日韩精品**专区| 国产a∨精品一区二区三区不卡| 精品亚洲一区二区三区在线观看| 全球成人中文在线| 久久久久久国产精品久久| 疯狂做受xxxx高潮欧美日本| 久久精品国产一区二区电影| 4438全国亚洲精品在线观看视频| 久久国产精品首页| 欧美裸体xxxx极品少妇| 精品国产福利在线| 国产精品夜色7777狼人| 国产视频观看一区| 国产不卡一区二区在线播放| 国产精品自拍偷拍视频| 亚洲精品福利资源站| 国产在线视频91| 国产美女扒开尿口久久久| 日韩欧美国产网站| 欧美黑人一区二区三区| 一区二区三区www| 成人羞羞国产免费| 啪一啪鲁一鲁2019在线视频| 亚洲毛茸茸少妇高潮呻吟| 久久久久久美女| 欧美中文在线观看国产| 亚洲va国产va天堂va久久| 亚洲精品视频在线观看视频| 亚洲欧美国产一区二区三区| 最近2019中文字幕第三页视频| 九九热在线精品视频| 国产精品高清网站| 欧美激情第1页| 亚洲已满18点击进入在线看片| 日本免费一区二区三区视频观看| 亚洲加勒比久久88色综合| 亚洲自拍中文字幕| 日韩电影视频免费| 日韩在线视频国产| 精品久久中文字幕久久av| 精品中文字幕久久久久久| 亚洲天堂av在线免费观看| 国产精品99久久久久久www| 欧美大学生性色视频| 91色在线观看| www.日韩av.com| 日韩av电影手机在线| 久久精品青青大伊人av| 亚洲国产精品成人va在线观看| 欧美一级淫片aaaaaaa视频| 久久久亚洲影院你懂的| www.色综合| 久久久久久噜噜噜久久久精品| 中文字幕一区二区三区电影| 成人黄色片网站| 久久99热这里只有精品国产| 69视频在线播放| 亚洲伊人久久大香线蕉av| 欧美性资源免费| 91久久久久久久一区二区| 51久久精品夜色国产麻豆| 日韩av在线不卡| 伊人久久综合97精品| 九九精品在线观看| 亚洲日本欧美中文幕| 欧美色道久久88综合亚洲精品| 欧洲精品毛片网站| 国产成+人+综合+亚洲欧美丁香花| 久久亚洲私人国产精品va| 久久国产精品视频| 久久精品99无色码中文字幕| 韩国一区二区电影| 亚洲精品国产成人| 成人国产精品色哟哟| 国产精品久久久久久影视| 久久久国产精品视频| 国产精品嫩草影院一区二区| 欧美激情视频网| 日韩av大片免费看| 亚洲韩国欧洲国产日产av| 欧美成人四级hd版| 欧美国产日韩一区| 亚洲自拍偷拍第一页| 欧美色视频日本版| 久久99久久亚洲国产| 久久久久久久久网站| 永久免费毛片在线播放不卡| 久久综合伊人77777| 亚洲美女喷白浆| 日本一欧美一欧美一亚洲视频| 国产精品久久久av久久久| 亚洲免费一在线| 欧美国产日本高清在线| 日韩精品久久久久久福利| 一区二区在线免费视频| 欧美成人自拍视频| 亚洲成人a级网| 欧美最猛性xxxx| 亚洲男人的天堂网站| 91亚洲精品一区二区| 久久久极品av| 国产精品91在线观看| xxx成人少妇69| 久久亚洲国产精品成人av秋霞| 草民午夜欧美限制a级福利片| 亚洲最大成人免费视频| 久久精品一区中文字幕| 国产精品69精品一区二区三区| 高清欧美电影在线| 国产高清视频一区三区| 精品国产乱码久久久久酒店| 亚洲视频电影图片偷拍一区| 欧美成人第一页| 国产成人久久精品| 中文字幕不卡av| 亚洲精品永久免费| 欧美老女人性生活| 国产日韩欧美在线| 国内精品久久久久久久久| 国产精品久久久久久久久粉嫩av| 国产亚洲欧美aaaa|