ATL ActiveX 创建鼠标钩子

1.安装钩子

在控件的CPP文件定义

HHOOK g_hHook = NULL;

...控件指针...

g_hHook = SetWindowsHookEx(WH_MOUSE, MouseProc, _AtlBaseModule.GetModuleInstance(), 0);

_AtlBaseModule.GetModuleInstance() //获得HINSTALL

0:当前线程

钩子函数

LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{

//这里截获的是鼠标滚轮滚动消息,问题在windows 7 中定义是0x20E,但是实际的消息是0x20A,因此在这里都加进去了

    if(nCode >= 0 && (wParam == WM_MOUSEHWHEEL || wParam == 0x20A))
    {
        PMOUSEHOOKSTRUCTEX pmsex = (PMOUSEHOOKSTRUCTEX)lParam;
        short zDelta = GET_WHEEL_DELTA_WPARAM(pmsex->mouseData);
        ...控制指针完成工作...
    }
    return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}


2.卸载钩子

UnhookWindowsHookEx(g_hHook);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值