• 5455阅读
  • 14回复

昭姐每天一练- C++全局鼠标钩子 [复制链接]

上一主题 下一主题
离线小昭
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2013-06-08



#include <windows.h>
#include "mouse.h"
#include "stdio.h"


HINSTANCE    hDllInst    = NULL ;    // DLL模块实例句柄

int WINAPI DllMain ( HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved )
{
    if ( fdwReason == DLL_PROCESS_ATTACH )
        hDllInst = hInstance ;        // 保存DLL实例句柄
    return true ;
}

// 鼠标钩子消息处理过程
LRESULT CALLBACK MouseProc ( int nCode, WPARAM wParam, LPARAM lParam )
{
    if ( nCode == HC_ACTION )
    {
        WCHAR    szBuf[32] = {0} ;
        PMOUSEHOOKSTRUCT pMouseInfo = (PMOUSEHOOKSTRUCT)lParam ;
        switch ( wParam )
        {
        // 对鼠标移动消息的处理
        case WM_MOUSEMOVE:
            {
                // 设置鼠标坐标信息
                wsprintf ( szBuf, L"( %d, %d )", pMouseInfo->pt.x, pMouseInfo->pt.y ) ;
                SetWindowText  ( hTagWnd, szBuf ) ;
            }
            break ;
        // 可以添加对其他鼠标消息的处理
        case WM_LBUTTONDOWN:    break ;
        case WM_LBUTTONUP:        break ;
        case WM_LBUTTONDBLCLK:    break ;
        }
    }
    // 继续传递消息
    return CallNextHookEx ( hMouse, nCode, wParam, lParam ) ;
}

// 钩子控制函数,能够启动/卸载钩子
BOOL WINAPI SetHook ( HWND hwnd, BOOL isInstall )
{
    // 需要安装,且鼠标钩子不存在
    if ( isInstall && !hMouse )
    {
        // 保存窗体句柄到共享段
        hTagWnd = hwnd ;    

        // 设置全局钩子
        hMouse = SetWindowsHookEx ( WH_MOUSE, (HOOKPROC)MouseProc, hDllInst, 0 ) ;
        if ( hMouse == NULL )
            return FALSE ;
    }

    // 需要卸载,且鼠标钩子存在
    if ( !isInstall && hMouse )
    {
        // 卸载钩子
        BOOL ret = UnhookWindowsHookEx ( hMouse ) ;
        hMouse        = NULL ;
        hTagWnd        = NULL ;
        return ret ;
    }

    return TRUE ;
}


附件设置隐藏,需要回复后才能看到!
离线莫名

只看该作者 沙发  发表于: 2013-07-08
      
莫名
离线hifyl

只看该作者 板凳  发表于: 2013-07-08
学习徐诶
离线wjtwyp

只看该作者 地板  发表于: 2013-07-22
谢谢分享
离线goodhlsfyl

只看该作者 4楼 发表于: 2013-08-02
好冷清啊,
昭姐,看来他们更喜欢视频,看不懂源码哈哈
离线qq296162636

只看该作者 5楼 发表于: 2013-08-23
学习??????????
离线yangyss

只看该作者 6楼 发表于: 2013-08-24
~~看大神~~~~~~
离线qwe111

只看该作者 7楼 发表于: 2013-09-19
...................................
离线linoffice

只看该作者 8楼 发表于: 2013-10-08
好!!!
离线zsedcvgyhn

只看该作者 9楼 发表于: 2013-11-13
vartation
离线qq18562737

只看该作者 10楼 发表于: 2013-12-01
压顶地
离线ful4859759

只看该作者 11楼 发表于: 2013-12-10
昭姐每天一练- C++全局鼠标钩子
离线wing

只看该作者 12楼 发表于: 2014-02-14
感谢分享
离线woairexue

只看该作者 13楼 发表于: 2017-03-06
万分感谢
离线qwe1989

只看该作者 14楼 发表于: 03-13
看看
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个