鼠标连点器(VB.net 全局键盘钩子+模拟鼠标 左键、右键)

这篇具有很好参考价值的文章主要介绍了鼠标连点器(VB.net 全局键盘钩子+模拟鼠标 左键、右键)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

相信大家在玩游戏的时候会把 “攻击” 设置为鼠标左键,但是自己手速不够快,被人家秒了

废话不多说,立马进入主题:

一、新建一个vb.net工程(窗体应用程序)

鼠标连点器(VB.net 全局键盘钩子+模拟鼠标 左键、右键)

大概是这样,timer1控制鼠标左键,timer2控制鼠标右键

二、新建一个模块(Module1.vb)

写入:注意,本模块由CSDN用户VB.net提供的,引用一下vb.net 全局键盘钩子

'鼠标钩子
Imports System.Runtime.InteropServices
Module Module1
    <DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)>
    Public Function SetWindowsHookEx(ByVal idHook As Integer, ByVal HookProc As KeyHook, ByVal hInstance As IntPtr, ByVal wParam As Integer) As Integer
    End Function
    <DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)>
    Public Function CallNextHookEx(ByVal idHook As Integer, ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As Integer
    End Function
    <DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)>
    Public Function UnhookWindowsHookEx(ByVal idHook As Integer) As Boolean
    End Function
    <DllImport("kernel32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)>
    Public Function GetModuleHandle(ByVal name As String) As IntPtr
    End Function

    <StructLayout(LayoutKind.Sequential)>
    Public Structure KBDLLHOOKSTRUCT
        Public vkCode As Keys
        Public scanCode As Keys
        Public flags As Integer
        Public time As Integer
        Public dwExtraInfo As Integer
    End Structure
    Public Const HC_ACTION As Integer = 0

    Public Const WH_KEYBOARD_LL As Integer = 13

    Public Delegate Function KeyHook(ByVal Code As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As Integer

    '<MarshalAs(UnmanagedType.FunctionPtr)>
    Public callback As KeyHook
End Module

主窗体:

鼠标连点器(VB.net 全局键盘钩子+模拟鼠标 左键、右键)

代码:

Imports System.Runtime.InteropServices
'Imports System.Threading
'鼠标连点class,钩子,模拟左键按下,右键按下
Public Class Form1
    'Dim start As Boolean
    Dim hooks As Boolean
    Dim state As String
    Dim i As Int32
    ' Dim flag As Boolean = False
    Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    Public Const MOUSEEVENTF_LEFTDOWN = &H2 '模拟鼠标左键按下
    Public Const MOUSEEVENTF_LEFTUP = &H4 '模拟鼠标左键释放
    Public Const MOUSEEVENTF_RIGHTDOWN = &H8 '模拟鼠标右键按下
    Public Const MOUSEEVENTF_RIGHTUP = &H10 '模拟鼠标右键释放
    Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As Long '全屏坐标声明
    Private Declare Function ScreenToClient Lib "user32.dll" (ByVal hwnd As Int32, ByRef lpPoint As POINTAPI) As Int32 '窗口坐标声明
    Dim P As POINTAPI

    Private Structure POINTAPI '声明坐标变量
        Public x As Int32 '声明坐标变量为32位
        Public y As Int32 '声明坐标变量为32位
    End Structure
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If R1.Checked = True Then
            Timer1.Interval = TR.Text
            Timer1.Enabled = True
            R1.Enabled = False
            R2.Enabled = False
        End If
        If R2.Checked = True Then
            Timer2.Interval = TR.Text
            Timer2.Enabled = True
            R1.Enabled = False
            R2.Enabled = False
        End If
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Timer1.Enabled = False
        Timer2.Enabled = False
        R1.Enabled = True
        R2.Enabled = True
    End Sub

    'Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
    '    Select Case keyData
    '        Case Keys.F6
    '            Button1_Click(Nothing, Nothing)
    '            flag = True
    '            Return True
    '        Case Keys.F7
    '            Timer1.Enabled = False
    '        Case Else
    '            Return MyBase.ProcessCmdKey(msg, keyData)   '其他键按默认处理
    '    End Select
    'End Function

    Public KeyHandle As Integer
    Public Function KeyCallback(ByVal Code As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As Integer
        If Code >= HC_ACTION Then
            Dim keyStruct As KBDLLHOOKSTRUCT
            keyStruct = CType(Marshal.PtrToStructure(lParam, GetType(KBDLLHOOKSTRUCT)), KBDLLHOOKSTRUCT)
            state &= keyStruct.vkCode.ToString & ControlChars.CrLf
            '这里是检测并屏蔽F6按键
            If keyStruct.vkCode = Keys.F6 Then 'Or keyStruct.vkCode = Keys.R F6
                Button1_Click(Nothing, Nothing)
                Return 1
            End If
            If keyStruct.vkCode = Keys.F7 Then 'Or keyStruct.vkCode = Keys.R F7
                Button2_Click(Nothing, Nothing)
                Return 1
            End If
        End If
        Return CallNextHookEx(KeyHandle, Code, wParam, lParam)
    End Function

    Public Sub HookKeyboard()
        callback = New KeyHook(AddressOf KeyCallback)
        Dim hins As IntPtr = IntPtr.Zero
        hins = GetModuleHandle(Process.GetCurrentProcess.MainModule.ModuleName)
        KeyHandle = SetWindowsHookEx(WH_KEYBOARD_LL, callback, hins, 0)
        'If (KeyHandle > 0) Then
        '    state &= "启动钩子" & ControlChars.CrLf
        'Else
        '    state &= "启动钩子失败:" & Err.LastDllError & ControlChars.CrLf
        'End If
    End Sub

    Public Sub UnhookKeyboard()
        Call UnhookWindowsHookEx(KeyHandle) '停止钩子
        'state &= "停止钩子" & ControlChars.CrLf
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        HookKeyboard()
        hooks = True
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        If TopMost = True Then
            TopMost = False
        ElseIf TopMost = False Then
            TopMost = True
        End If
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        If hooks = True Then
            Call UnhookWindowsHookEx(KeyHandle)
        ElseIf hooks = False Then
            Call HookKeyboard()
        End If
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        run1()
    End Sub
    Sub run1()
        GetCursorPos(P)
        mouse_event(MOUSEEVENTF_LEFTDOWN, P.x.ToString, P.y.ToString, 0, 0)
        mouse_event(MOUSEEVENTF_LEFTUP, P.x.ToString, P.y.ToString, 0, 0)
        i += 1
        Text = "鼠标连点--" & " 正在点击:" & i
    End Sub
    Sub run2()
        mouse_event(MOUSEEVENTF_RIGHTDOWN, P.x.ToString, P.y.ToString, 0, 0)
        mouse_event(MOUSEEVENTF_RIGHTUP, P.x.ToString, P.y.ToString, 0, 0)
        i += 1
        Text = "鼠标连点--" & " 正在点击:" & i
    End Sub

    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
        run2()
    End Sub
End Class

 测试:还不错,但唯一的缺点是timer无法精确到1ms,导致实际值比理论值相差大

链接:下载连点器  链接: https://pan.baidu.com/s/1ZSpsfYwtGLXSHdEEaiAk0Q?pwd=vrde 提取码: vrde 文章来源地址https://www.toymoban.com/news/detail-489237.html

到了这里,关于鼠标连点器(VB.net 全局键盘钩子+模拟鼠标 左键、右键)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c#使用Hook钩子全局监听键盘和鼠标

    背景:今天接到客户一个需求,就是在收银员在用扫码枪扫顾客会员码或者微信付款码的时候判断用户有没有加企微好友和进企微群,然后根据这个状态进行语音播报,判断顾客能不能享受优惠价。关键难点就是用户用的收银系统是别家的,线上小程序用的是我们家的,两家

    2024年01月22日
    浏览(31)
  • C# 实现全局鼠标钩子操作以及发送键盘事件

    全局钩子定义 winfrom窗体代码: 效果截图:

    2024年02月05日
    浏览(25)
  • C#使用SnsSharp实现鼠标键盘钩子,实现全局按键响应

    CSDN下载地址:https://download.csdn.net/download/sns1991sns/88041637 gitee下载地址:https://gitee.com/linsns/snssharp 一、键盘事件,使用 SnsKeyboardHook 按键事件共有3个:         KeyDown (按键按下)                 KeyUp (按键松开)                  KeyPress (按键按下并松开) 以

    2024年02月14日
    浏览(23)
  • C语言和win32绿色鼠标连点器,带代码(Windows)

    前言: 项目名称:绿色鼠标连点器。 系统平台:Windows。 使用api: Win32api。 使用语言:C。 编译器/IDE:gcc,Dev cpp,Visual Studio。 项目前言: 本项目也是自己开发(编写),不过这个项目是我之前(2021年)读完《C Primer Plus》之后写的第一个“项目”,而且发表过我之前的个人使用服

    2024年02月08日
    浏览(28)
  • 逆向大漠插件/用VB6.0实现后台鼠标移动和后台鼠标左键点击

    自动化设计软件,在一款做门的设计软件CypCut6.3 上实现了自动化勾选了 复选框。一切都是基于后台的。 Private Const GW_CHILD = 5 Private Const GW_HWNDFIRST = 0 Private Const GW_HWNDNEXT = 2 Public Declare Function FindWindow Lib \\\"user32\\\" Alias \\\"FindWindowA\\\" (ByVal lpClassName As String, ByVal lpWindowName As String) As Lon

    2024年02月07日
    浏览(41)
  • c++实现连点器

    本期为大家收集了四个用c++实现连点器的程序(非常好用) 首先是@LiJoQiao提供的第一个版本,能实现连点鼠标左键 然后是@Zimse提供的第二个版本,在第一个版本的使用体验上有所升级 然后是@Coders提供的支持鼠标右键的版本  最后是@incra提供的支持按键的连点器 那今天就到

    2024年02月20日
    浏览(24)
  • python︱使用python制作简易连点器

    当我们使用电脑的时候,不可避免的会碰到重复点击的任务。所以我们可以使用python制作一个简单的连点器进行使用,同时可以提升写代码的水平。 目录 第一步:前期准备 你需要一个可以编辑并运行python代码的程序 下载第三方库  第二步:整体思路 第三步:编写代码 1.导

    2024年02月14日
    浏览(29)
  • 12.1 使用键盘鼠标监控钩子

    本节将介绍如何使用 Windows API 中的 SetWindowsHookEx 和 RegisterHotKey 函数来实现键盘鼠标的监控。这些函数可以用来设置全局钩子,通过对特定热键挂钩实现监控的效果,两者的区别在于 SetWindowsHookEx 函数可以对所有线程进行监控,包括其他进程中的线程,而 RegisterHotKey 函数只能

    2024年02月08日
    浏览(27)
  • 万能自动点击器连点器,连击器的作用解析

    而在互联网时代,在用户需要进行频繁操作、特别是重复性操作的情况下万能自动点击器连点器应运而生。本文将探讨这些工具如何帮助我们实现计算机自动化操作,万能自动点击器连点器有什么作用?   一.万能自动点击器连点器定义 万能自动点击器连点器是用于计算机简

    2024年02月08日
    浏览(29)
  • winapi模拟鼠标按住左键拖动

            继前文《windows下通过uiAutomation技术获取ui元素》介绍获取ui元素信息后,还需要对信息进行修改,但是 uiAutomation 技术并未提供可修改的 api ,只能另辟他径看看了。         以 camera raw 为例,已知的是可将鼠标放在指定区域位置,然后按下左键并左右拖动,也

    2024年02月16日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包