`
jqj031
  • 浏览: 72863 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

用Mouse_event和Keybd_event来控制鼠标和键盘

    博客分类:
  • js
阅读更多
原文URL:http://hi.baidu.com/wxvp/blog/item/37e3d44e5baea80fb2de05d1.html


这个函数在user32.dll这个库文件里面。我们可以在C:\WINDOWS\system32(XP系统)这个目录下找到这个文件,他是系统自带的。 我们以C#直接调用这个文件中的API为例子来说下怎么进行鼠标操作,首先在我们C#中声明引用,如果是一个基于From的程序,这个声明的位置写在你的From class就可以了
[System.Runtime.InteropServices.DllImport("user32")]
private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);

参数 意义
dwFlags Long,下表中标志之一或它们的组合
dx,dy Long,根据MOUSEEVENTF_ABSOLUTE标志,指定x,y方向的绝对位置或相对位置
cButtons Long,没有使用
dwExtraInfo Long,没有使用

dwFlags常数 意义

const int MOUSEEVENTF_MOVE = 0x0001;      移动鼠标
const int MOUSEEVENTF_LEFTDOWN = 0x0002; 模拟鼠标左键按下
const int MOUSEEVENTF_LEFTUP = 0x0004; 模拟鼠标左键抬起
const int MOUSEEVENTF_RIGHTDOWN = 0x0008; 模拟鼠标右键按下
const int MOUSEEVENTF_RIGHTUP = 0x0010; 模拟鼠标右键抬起
const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; 模拟鼠标中键按下
const int MOUSEEVENTF_MIDDLEUP = 0x0040; 模拟鼠标中键抬起
const int MOUSEEVENTF_ABSOLUTE = 0x8000; 标示是否采用绝对坐标


程序中我们直接调用mouse_event函数就可以了
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0);

1、这里是鼠标左键按下和松开两个事件的组合即一次单击:
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )

2、模拟鼠标右键单击事件:
mouse_event (MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 )

3、两次连续的鼠标左键单击事件 构成一次鼠标双击事件:
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )

4、使用绝对坐标
MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0

需要说明的是,如果没有使用MOUSEEVENTF_ABSOLUTE,函数默认的是相对于鼠标当前位置的点,如果dx,和dy,用0,0表示,这函数认为是当前鼠标所在的点。5、直接设定绝对坐标并单击
mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
其中X,Y分别是你要点击的点的横坐标和纵坐标

而键盘模拟用 Keybd_event()

Keybd_event能触发一个按键事 件,也就是说回产生一个WM_KEYDOWN或WM_KEYUP消息。当然也可以用产生这两个消息来模拟按键,但是没有直接用这个函数方便。 Keybd_event共有四个参数,第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab。第二个参数为扫描码,一般不用 设置,用0代替就行。第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成“KEYEVENTF_KEYUP”,第四个参数一 般也是置0即可。用如下代码即可实现模拟按下i键,其中的 49 表示 i 键的虚拟键值:
分享到:
评论

相关推荐

    keybd_event,mouse_event 模拟产生键盘事件、鼠标事件的使用

    总之,`keybd_event` 和 `mouse_event` 提供了强大的能力,可以让你的程序模拟用户的键盘输入和鼠标操作。这些功能在自动化测试、用户界面自动化和游戏开发等领域具有广泛的应用。了解并熟练掌握这些API的使用,将极...

    keybd_event()和mouse_event().rar

    在Windows API中,`keybd_event()`和`mouse_event()`是两个重要的函数,它们分别用于模拟键盘事件和鼠标事件。这两个函数在开发自动化测试、模拟用户操作或游戏编程等场景中非常有用。让我们深入探讨一下这两个函数...

    vc模拟按鼠标左击+上箭头+回车keybd_event

    在这个案例中,"vc模拟按鼠标左击+上箭头+回车keybd_event"涉及到的是使用C++和Windows API来模拟键盘事件(`keybd_event`)以及鼠标事件。 `keybd_event`是Windows API提供的一种方法,用于模拟键盘输入。它接受四...

    VC模拟鼠标键盘操作

    在VC环境下,可以通过调用`keybd_event`和`mouse_event`这两个API函数来模拟鼠标和键盘的操作。以下是对这些函数及其使用的详细介绍: #### `keybd_event`函数详解 `keybd_event`函数用于模拟键盘按键事件。该函数...

    API(keyboard and mouse).zip_book5zh_keyboard_labview_mouse_键盘

    这个压缩包可能包含了一些示例代码或者教程,比如“book5zh”,可能是一本关于LabVIEW使用API进行键盘鼠标控制的中文书籍或者教程的第五章。学习者可以通过这些资源来深入理解如何在LabVIEW中有效地使用Windows API...

    C#中winform实现自动触发鼠标、键盘事件的方法

    在C# WinForm应用开发中,自动触发鼠标和键盘事件是一项关键功能,它允许程序员模拟用户的交互行为,例如测试用户界面或实现自动化脚本。以下将详细介绍如何在C#中实现这一功能。 首先,要触发鼠标事件,我们需要...

    易语言仿按键精灵录制键盘鼠标操作的代码

    易语言仿按键精灵录制键盘鼠标操作的代码是使用易语言来实现模拟键盘鼠标操作的录制,通过使用DLL命令来模拟鼠标和键盘的操作。该代码提供了一个完整的解决方案,包括模拟鼠标按键、模拟键盘按键、获取鼠标位置、...

    VB_API.rar_vb 模拟按键_vb 鼠标_vb模拟按键_模拟按键_模拟鼠标

    使用keybd_event,你可以分别模拟按键按下和释放的动作。 ```vb Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) '...

    vb模拟后台模拟键盘鼠标信息的操作

    如果涉及到键盘操作,相应地使用`Keybd_event`或`SendInput`来模拟按键。 VB代码示例: ```vb Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long Declare Function mouse_...

    QTP模拟鼠标和键盘事件整理

    使用`Mercury.DeviceReplay`类可以更加灵活地控制鼠标和键盘事件,从而实现更为复杂的自动化测试场景。例如,实现一个简单的鼠标点击功能: ```vb Function Mouse_Click(x, y) Set device = CreateObject("Mercury...

    模拟鼠标操作.zip

    本压缩包"模拟鼠标操作.zip"包含了一个用C语言编写的程序,它利用了Windows API中的`mouse_event`函数来实现这一功能。下面我们将详细探讨这个知识点。 `mouse_event`是Windows API提供的一种系统级函数,用于模拟...

    用Qt使用按键模拟函数和鼠标模拟函数实现网页刷新 示例 demo

    Qt使用鼠标模拟函数mouse_event和按键模拟函数keybd_even实现网页刷新功能 https://blog.csdn.net/qq_29542611/article/details/83421552

    13、C# 模拟按键精灵的功能实现.zip

    然而,`SendKeys`有时可能会有延迟,所以在更复杂的应用中,可能需要使用`user32.dll`的`keybd_event`或`SendInput`函数来获得更精确的控制。 在C#中,为了更好地组织代码,通常我们会创建一个`KeyMouseSimulator`...

    delphi模拟按键精灵鼠标、键盘操作源代码

    以上就是关于Delphi模拟按键精灵鼠标、键盘操作的详细介绍,包括让Webbrowser响应回车事件的方法以及模拟鼠标点击和键盘输入的具体实现。这些技术的应用非常广泛,尤其是在自动化测试领域,可以极大地提高开发效率。

    通过代码模拟键盘输入

    在没有键盘和鼠标的情况下,代码模拟键盘输入通常借助操作系统提供的API函数来实现。如在Windows操作系统中,可以使用`keybd_event`函数模拟键盘按键事件。该函数是Windows API的一部分,用于发送一个键盘事件给系统...

    基于QT5.11简易鼠标键盘自动连发 鼠标键盘连发 Windows API

    但根据描述和标签,我们可以推测其背后的实现原理可能涉及QT的信号与槽机制,以及对Windows API的深度利用,比如`SetCursorPos`用于定位鼠标,`mouse_event`或`SendInput`用于模拟鼠标点击,`keybd_event`或`...

    读通达信数据

    - **操作**:使用`keybd_event`函数模拟键盘输入股票代码。 - **示例**: ```vfp keybd_event(48,0,0,0) // 输入数字"0" keybd_event(48,0,0x2,0) // 模拟释放数字"0"键 Sleep(1) // 延时1秒 ``` - **目的**...

    delphi 模拟鼠标操作

    模拟击键和模拟按键的概念与模拟鼠标操作类似,主要使用API函数`SendInput`或`keybd_event`,或者通过`JCL`等库简化这些操作。模拟点击通常结合模拟鼠标和键盘操作,例如在游戏中自动执行某些动作。 综上所述,...

    VB模拟鼠标键盘操作源代码

    Windows操作系统提供了许多内建的API函数,比如`SendInput`,`mouse_event`和`keybd_event`等,可以用来模拟用户的键盘和鼠标输入。`SendInput`函数是现代Windows系统推荐用于模拟输入的API,它可以精确地模拟各种...

    API模拟发送按键.鼠标动作

    鼠标动作”涉及的是利用API函数来模拟用户的键盘输入和鼠标操作,这对于自动化测试、脚本编写或远程控制等场景非常有用。下面我们将深入探讨这一技术。 首先,API模拟发送按键主要涉及到Windows API中的几个函数,...

Global site tag (gtag.js) - Google Analytics