捕获鼠标滚轮 shift-如何捕获鼠标的左右滚轮消息,然后模拟Shift按键按下

问题描述

如何捕获鼠标的左右滚轮消息,然后模拟Shift按键按下
需求现状如下:我有个软件在XP下使用挺好的。但是到了win7下面,使用该软件的时候,出现如下问题:鼠标左右滚轮变得和上下滚轮一样了,只有同时按下shift键,才能恢复到原来鼠标左右滚轮功能。为了让鼠标的左右滚轮能正常使用,我不得不同时按下shift键,很麻烦。
我的打算:想用VC6写一个钩子函数,捕获鼠标的左右滚轮消息,如果检测到有鼠标的左右滚轮滚动,然后模拟Shift按钮按下,向所有进程发送此模拟Shift按钮按下的键盘消息。

解决方案

钩子处理WM_MOUSEWHEEL消息就行了吧。然后postmessage发送模拟键应该可以

解决方案二:
在检测到滑轮按下时,直接发送个shift按键和滑轮按键就可以

解决方案三:
我写了如下的DLL

#include <windows.h>HHOOK g_hMouse = NULL;HHOOK g_hKeyboard = NULL;int g_flag = 0;LRESULT CALLBACK MouseProc(int nCode WPARAM wParam LPARAM lParam){    if(WM_MOUSEWHEEL == wParam)    {        g_flag = 1;    }    else    {        g_flag = 0;    }    return CallNextHookEx(g_hMouse nCode wParam lParam);}LRESULT CALLBACK KeyboardProc(int nCode WPARAM wParam LPARAM lParam){    if(1 == g_flag)    {        wParam |= VK_LSHIFT;    }    return CallNextHookEx(g_hKeyboard nCode wParam lParam);}void SetHook(){    g_hMouse = SetWindowsHookEx(WH_MOUSE MouseProc GetModuleHandle(""Hook"") 0);    g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD KeyboardProc GetModuleHandle(""Hook"") 0);}

编译的时候报错,如下:
Compiling...
Hook.cpp
E:VC++程序VC++程序WheelHookHook.cpp(10) : error C2065: 'WM_MOUSEWHEEL' : undeclared identifier
E:VC++程序VC++程序WheelHookHook.cpp(10) : warning C4018: '==' : signed/unsigned mismatch
Error executing cl.exe.
Creating browse info file...

WheelHook.dll - 1 error(s) 1 warning(s)

不知道为什么,求各位大侠指点迷津。
也不知道这些写 是否可以解决问题。

时间: 2024-10-30 13:27:20

捕获鼠标滚轮 shift-如何捕获鼠标的左右滚轮消息,然后模拟Shift按键按下的相关文章

全能鼠标记录器怎么用 全能鼠标记录器使用教程

  常对电脑工作的朋友来说,若鼠标有记忆功能可以省去不少时间,本文小编就来推荐一款名为全能鼠标记录器的工具,全能鼠标记录器怎么用?下面小编就为大家带来全能鼠标记录器使用教程,一起来参考一下吧. 全能鼠标记录器怎么用 全能鼠标记录器使用教程 全能鼠标键盘记录器主要专注于游戏应用方便,适合网游练级,游戏打怪及自动补血等应用.用户可使用它完成一些相对较为简单的需要不断重复的工作. 全能鼠标记录器功能一览: 全能鼠标记录器使用教程: 第一步:建立一个新魔法 想要通过自动操作魔法师完成一个操作,第一件事就

C# 系统应用之鼠标模拟技术及自动操作鼠标

游戏程序的操作不外乎两种--键盘输入控制和鼠标输入控制,几乎所有游戏中都使用鼠标来改变角色的位置和方向,本文主要是讲述如何使用C#调用Windows API函数实现鼠标模拟操作的功能.首先通过结合FindWindow和FindWindowEx寻找到窗体的按钮,在通过SetCursorPos或mouse_event函数操作鼠标,同时涉及到通过spy++工具获取窗体消息的信息. 一. Windows API函数介绍 .NET没有提供改变鼠标指针位置.模拟单机操作的函数,但是可以通过调用Windows

鼠标点击坐标-在鼠标钩子中,如何实时获得鼠标的屏幕坐标?

问题描述 在鼠标钩子中,如何实时获得鼠标的屏幕坐标? 在鼠标钩子的WM_LBUTTONDOWN消息中,我想获得鼠标点击瞬间的坐标.注意,是鼠标点击瞬间. 我现在知道有两种方法 1.GET_X_LPARAM(lparam)和GET_Y_LPARAM(lparam). 这种方法获取的是相对于钩子的鼠标坐标,但是钩子不像窗体,没有自己的坐标吧.我获取到的坐标要么很大,要么是负数...然后我尝试用钩子句柄来转换,ClientToScreen((HWND)hMouseHook, &pt).得到的pt值也不

wpf 坐标+-WPF 在Canvas 或grid中以鼠标弹出一个以鼠标中心点位置的UserControl

问题描述 WPF 在Canvas 或grid中以鼠标弹出一个以鼠标中心点位置的UserControl 具体我做了一个圆形的菜单 的UserControl 在点击窗体时 在主窗体通过鼠标点击弹出 弹出的窗体以鼠标中心点为中心! 解决方案 好吧 我自己解决了 为什么 我每一次问完问题 都会自己搞定...

用ajax怎么验证,鼠标离开事件,验证鼠标离开时,那个学生编号是否唯一,,暂时没有赞帮忙解答,谢谢

问题描述 用ajax怎么验证,鼠标离开事件,验证鼠标离开时,那个学生编号是否唯一,,暂时没有赞帮忙解答,谢谢 怎么写,那个ajax验证鼠标离开时学生编号是唯一的,要从数据库里查看,鼠标离开时,那个编号是不是数据库里已经有了的 解决方案 C#的也是类似的:你可以根据需要修改上面的:用到了JQuery的一些东西. 如果回答对你有帮助请采纳 解决方案二: * //失去焦点时触发的事件 $('#id').blur(function () { //后台写一个方法,根据学号验证数据库是否已经存在记录 //a

与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控

原文:与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控 [索引页][源码下载] 与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控 作者:webabcd 介绍与众不同 windows phone 7.5 (

要求 图片循环滚动 左右控制,鼠标指针放到图片上显示该图片的名称,下面代码在ie8下正常显示,但在ie6 ie7下显示不正常

问题描述 要求图片循环滚动左右控制,鼠标指针放到图片上显示该图片的名称,下面代码在ie8下正常显示,但在ie6ie7下显示不正常!请各位大侠帮下小弟!另发现在ie8下第一遍图片滚动完毕后第二遍图片下面没有显示文字<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlx

JS拖动鼠标画出方框实现鼠标选区的方法_javascript技巧

本文实例讲述了JS拖动鼠标画出方框实现鼠标选区的方法.分享给大家供大家参考.具体如下: 相当实用的一个JS技巧,拖动鼠标可画出一个方框,可作为一个选区的功能,可以用来画流程图,设计草图什么的,也可以作为上传头像时裁切选择图片,在头像裁切中使用广泛,鼠标在图片上拖动拉出一个方框,这个方框就代表着选区的功能,目前网页上已流行的一种操作.主要是依赖于JavaScript代码来实现. 运行效果如下图所示: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHT

C#中如何使用代码模拟shift键一直按下,谢谢!

问题描述 C#中如何使用代码模拟shift键一直按下,谢谢! 解决方案 解决方案二:本帖最后由 guwei4037 于 2013-11-12 18:38:45 编辑解决方案三:在listbox里面不同的添加内容:privatevoidbutton1_Click(objectsender,EventArgse){Threadth=newThread(()=>{while(true){Thread.Sleep(1000);SendKeys.SendWait("+");}}){IsBa