首页编程全局钩子 使用易语言怎么设置鼠标全局钩子

全局钩子 使用易语言怎么设置鼠标全局钩子

编程之家2023-11-0290次浏览

大家好,今天小编来为大家解答以下的问题,关于全局钩子,使用易语言怎么设置鼠标全局钩子这个很多人还不知道,现在让我们一起来看看吧!

全局钩子 使用易语言怎么设置鼠标全局钩子

使用易语言怎么设置鼠标全局钩子

.版本 2

.DLL命令 api_设置系统钩子,整数型,"user32.dll","SetWindowsHookExA",,, SetWindowsHookEx

.参数钩子类型,整数型,, idHook

.参数回调函数地址,整数型,, lpfn

.参数实例句柄,整数型,, hmod

.参数线程ID,整数型,, dwThreadId

全局钩子 使用易语言怎么设置鼠标全局钩子

.DLL命令 api_呼叫下一钩子,整数型,"user32.dll","CallNextHookEx",,, CallNextHookEx

.参数钩子句柄,整数型,, hHook

.参数回调函数参数1,整数型,, ncode

.参数回调函数参数2,整数型,, wParam

.参数回调函数参数3,整数型,, lParam

.DLL命令 api_释放系统钩子,整数型,"user32.dll","UnhookWindowsHookEx",,, UnhookWindowsHookEx

全局钩子 使用易语言怎么设置鼠标全局钩子

.参数钩子句柄,整数型,, hHook

.DLL命令 api_取实例句柄,整数型,,"GetModuleHandleA",,,

.参数程序名,整数型

.DLL命令 api_拷贝内存,整数型,"kernel32","RtlMoveMemory",,, RtlMoveMemory

.参数回调结构,鼠标结构,, lpvDest

.参数钩子回调函数参数3,整数型,, lpvSource

.参数尺寸,整数型,, cbCopy

.版本 2

.数据类型鼠标结构,公开

.成员成员1,整数型

.成员成员2,坐标结构

.成员成员3,整数型

.数据类型坐标结构

.成员 x,整数型

.成员 y,整数型

.版本 2

.支持库 spec

.程序集窗口程序集1

.程序集变量钩子句柄,整数型

.子程序 _按钮1_被单击

钩子句柄= api_设置系统钩子(14,取子程序地址(&鼠标钩子回调函数), api_取实例句柄(0), 0)

.子程序鼠标钩子回调函数,整数型

.参数参数1

.参数参数2

.参数参数3

.局部变量鼠标信息,鼠标结构

.局部变量坐标z,坐标结构

.判断开始(参数2= 513)

_启动窗口.标题=“你按下了鼠标左键”

.默认

.判断结束

.判断开始(参数2= 514)

_启动窗口.标题=“你放开了鼠标左键”

.默认

.判断结束

.判断开始(参数2= 516)

_启动窗口.标题=“你按下了鼠标右键”

.默认

.判断结束

.判断开始(参数2= 517)

_启动窗口.标题=“你放开了鼠标右键”

.默认

.判断结束

.如果真(参数2= 512)

api_拷贝内存(鼠标信息,参数3, 10)

坐标z=鼠标信息.成员2

输出调试文本(“x=”+到文本(坐标z.x))

输出调试文本(“y=”+到文本(坐标z.x))

.如果真结束

返回(api_呼叫下一钩子(钩子句柄,参数1,参数2,参数3))

.子程序 _按钮2_被单击

api_释放系统钩子(钩子句柄)

为什么游戏要安装全局钩子

“加载全局钩子”说白了就是全局的监控一个程序如果加载了全局钩子那基本就可以说这个程序可以监控到你在计算机上的一举一动一般认为除了杀毒软件一类的程序加载全局钩子是正常现象之外,其余程序有类似动作都可以认为可疑。如果你不知道这个程序是干什么的,那就更可疑了(杀毒软件需要监控其他所有程序以分析是否是病毒,所以类似于加载全局钩子的行为可以认为是正常的,不过其实杀毒软件也不一定加载全局钩子,因为监控的方法很多,而加载全局钩子的监控手段又并不是非常有效。)危害必然是有的,很多流行的木马和后门都是要加载全局钩子的~能监控到你的一举一动,那你还有什么隐私和秘密可言呢?解决方法当然是用杀毒软件清理了~其他的方案也可以使用XueTr或者IceSword一类的工具手动清除这些钩子~而游戏加载全局钩子,一般就是为了防止你使用一些外{过}{滤}挂等软件

用vb做全局鼠标键盘钩子。。。求助。。

下面是我的《记录鼠标》Form1.frm,其中也用到了键盘快捷键

VERSION 5.00

Begin VB.Form Form1

BorderStyle= 1'Fixed Single

Caption="记录鼠标"

ClientHeight= 4500

ClientLeft= 45

ClientTop= 435

ClientWidth= 7620

FillColor=&H000000FF&

Icon="Form1.frx":0000

LinkTopic="Form1"

MaxButton= 0'False

MinButton= 0'False

ScaleHeight= 4500

ScaleWidth= 7620

StartUpPosition= 3'窗口缺省

Begin VB.CheckBox Check1

Caption="操作时是否可以看到本软件"

Height= 255

Left= 4560

TabIndex= 14

Top= 240

Value= 1'Checked

Width= 3015

End

Begin VB.TextBox Tttex

Alignment= 2'Center

Appearance= 0'Flat

Height= 270

Left= 3480

Locked=-1'True

TabIndex= 13

Text="0<*>0"

Top= 570

Width= 1815

End

Begin VB.CommandButton Command6

Caption="退出(&E)"

Height= 375

Left= 6120

TabIndex= 12

Top= 3960

Width= 1335

End

Begin VB.Timer Timer3

Enabled= 0'False

Interval= 1000

Left= 3600

Top= 4320

End

Begin VB.TextBox Text2

Alignment= 2'Center

Appearance= 0'Flat

Height= 270

Left= 3480

TabIndex= 7

Text="20"

Top= 240

Width= 615

End

Begin VB.CommandButton Command5

Caption="清空录制(&Z)"

Height= 375

Left= 3000

TabIndex= 6

Top= 3480

Width= 1335

End

Begin VB.TextBox Text1

Appearance= 0'Flat

Height= 270

Left= 3480

TabIndex= 5

Text="D:\鼠标记录.text"

Top= 900

Width= 3975

End

Begin VB.CommandButton Command4

Caption="打开录制(&V)"

Height= 375

Left= 3000

TabIndex= 4

Top= 3960

Width= 1335

End

Begin VB.CommandButton Command3

Caption="保存录制(&B)"

Height= 375

Left= 4560

TabIndex= 3

Top= 3960

Width= 1335

End

Begin VB.ListBox List1

Height= 4200

ItemData="Form1.frx":324A

Left= 120

List="Form1.frx":324C

TabIndex= 2

Top= 120

Width= 2295

End

Begin VB.CommandButton Command2

Caption="回放录制(&C)"

Height= 375

Left= 6120

TabIndex= 1

Top= 3480

Width= 1335

End

Begin VB.Timer Timer2

Enabled= 0'False

Interval= 20

Left= 3000

Top= 4320

End

Begin VB.Timer Timer1

Enabled= 0'False

Interval= 20

Left= 2400

Top= 4320

End

Begin VB.CommandButton Command1

Caption="开始录制(&X)"

Height= 375

Left= 4560

TabIndex= 0

Top= 3480

Width= 1335

End

Begin VB.Label Label5

Caption="用法"

Height= 1935

Left= 2520

TabIndex= 11

Top= 1440

Width= 4935

End

Begin VB.Label Label4

Caption="保存地址:"

Height= 255

Left= 2520

TabIndex= 10

Top= 960

Width= 1575

End

Begin VB.Label Label3

Caption="当前位置:"

Height= 255

Left= 2520

TabIndex= 9

Top= 600

Width= 1455

End

Begin VB.Label Label2

Caption="回放速度:"

Height= 255

Left= 2520

TabIndex= 8

Top= 300

Width= 1215

End

End

Attribute VB_Name="Form1"

Attribute VB_GlobalNameSpace= False

Attribute VB_Creatable= False

Attribute VB_PredeclaredId= True

Attribute VB_Exposed= False

'获得鼠标点

Private Declare Function GetCursorPos Lib"user32"(lpPoint As POINTAPI) As Long

'移到鼠标点

Private Declare Function SetCursorPos Lib"user32"(ByVal x As Long, ByVal y As Long) As Long

'按下键盘

Private Declare Function GetAsyncKeyState Lib"user32"(ByVal vKey As Long) As Integer

'鼠标键-要求按下

Private 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)

Private Const MOUSEEVENTF_LEFTDOWN=&H2' left button down

Private Const MOUSEEVENTF_LEFTUP=&H4' left button up

Private Const MOUSEEVENTF_RIGHTDOWN=&H8' right button down

Private Const MOUSEEVENTF_RIGHTUP=&H10' right button up

Private Const MOUSEEVENTF_MIDDLEDOWN=&H20' middle button down

Private Const MOUSEEVENTF_MIDDLEUP=&H40' middle button up

'锁定,鼠标和键盘

Private Declare Function BlockInput Lib"user32"(ByVal fEnable As Long) As Long

Private Declare Sub Sleep Lib"kernel32"(ByVal dwMilliseconds As Long)

'定义

Dim xxx, yyy

Dim SSSDDD As String

Dim CC

'鼠标点类型

Private Type POINTAPI

x As Long

y As Long

End Type

'获得键盘按下

Private Function MyHotKey(vKeyCode) As Boolean

MyHotKey=(GetAsyncKeyState(vKeyCode))

End Function

'获得鼠标键按下

Private Function MyKey(vbKeyLButton) As Boolean

MyKey= GetAsyncKeyState(vbKeyLButton)

End Function

Private Sub Form_Load()

CC="记录鼠标"

SSSDDD="0"

Timer1.Enabled= True

Timer2.Enabled= False

Timer3.Enabled= False

Label5.Caption="用法:1开始录制时按下 A键停止录制;"& vbCrLf& _

" 2本软件还可以按下 S锁定鼠标和键盘,不可移动;"& vbCrLf& _

" 3本软件还可以按下 D锁定鼠标和键盘,可移动;"& vbCrLf& _

" 4每个控制都有一个快捷键,就是每个按钮后括号内。"& vbCrLf& _

vbCrLf& vbCrLf& vbCrLf& vbCrLf& vbCrLf& _

""& App.Title+"(版本"& App.Major&"."& App.Minor&"."& App.Revision&")"'当前版本号是

End Sub

'速度

Private Sub Text2_KeyPress(KeyAscii As Integer)

'文本中只能输入( 0123456789.)数字

If InStr(1,"0123456789", UCase(Chr(KeyAscii)), 1)<= 0 Then KeyAscii= 0

End Sub

Private Sub Text2_Change()

If Text2.Text> 0 Then Timer2.Interval= Text2.Text

End Sub

'读保文件

Private Sub Command3_Click()'List1保存*.txt

Dim fn As Integer, i As Integer

fn= FreeFile

Open Text1.Text For Output As#1

For i= 0 To List1.ListCount- 1

Print#1, List1.List(i)

Next

Close#1

MsgBox"成功保存到:"& Text1.Text

End Sub

Private Sub Command4_Click()'List1读取*.txt

List1.Clear'清空

Open Text1.Text For Input As#1

Do While Not EOF(1)

Line Input#1, Temp

List1.AddItem Temp

Loop

Close#1

End Sub

'清空List1

Private Sub Command5_Click()

List1.Clear

End Sub

'回放录制

Private Sub Command2_Click()

ShFu

If List1.ListCount> 0 Then

List1.ListIndex= 1

Form1.Caption="记录鼠标-正在回放"

Timer2.Enabled= True

End If

End Sub

Private Sub Timer2_Timer()

Dim x

List1.ListIndex= List1.ListIndex- 0+ 1

x= Split(List1.Text,"<*>")

SetCursorPos x(0), x(1)'你所需要点的位置

If x(2)="左" Then ZuoDanJi

If x(2)="中" Then ZongDanJi

If x(2)="右" Then YouDanJi

If List1.ListIndex>= List1.ListCount- 1 Then Form1.Caption="记录鼠标": CC="停锁记录鼠标": YhFu: Timer2.Enabled= False

End Sub

'鼠标左键点击

Private Sub ZuoDanJi()

mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&'模拟鼠标点击

End Sub

'鼠标中键点击

Private Sub ZongDanJi()

mouse_event MOUSEEVENTF_MIDDLEDOWN Or MOUSEEVENTF_MIDDLEUP, 0&, 0&, 0&, 0&'模拟鼠标点击

End Sub

'鼠标右键点击

Private Sub YouDanJi()

mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0&, 0&, 0&, 0&'模拟鼠标点击

End Sub

'开始录制

Private Sub Command1_Click()

ShFu

Form1.Caption="记录鼠标-正在录制(按下A键停止)"

End Sub

'录制

Private Sub Tttex_Change()

If Form1.Caption="记录鼠标-正在录制(按下A键停止)" Then List1.AddItem Tttex.Text

End Sub

Private Sub Timer1_Timer()

Dim MousG

If MyKey(vbKeyLButton) Then MousG="左"

If MyKey(vbKeyMButton) Then MousG="中"

If MyKey(vbKeyRButton) Then MousG="右"

Dim P1 As POINTAPI

GetCursorPos P1

Tttex.Text= P1.x&"<*>"& P1.y&"<*>"& MousG

MousG="0"

'快捷键

If MyHotKey(vbKeyA) Then Form1.Caption="记录鼠标": CC="停锁记录鼠标": YhFu'A键盘按下

If MyHotKey(vbKeyX) Then Command1_Click: ShFu

If MyHotKey(vbKeyC) Then Command2_Click: ShFu

If MyHotKey(vbKeyB) Then Command3_Click

If MyHotKey(vbKeyV) Then Command4_Click

If MyHotKey(vbKeyZ) Then Command5_Click

If MyHotKey(vbKeyE) Then Command6_Click

If MyHotKey(vbKeyS) Then SSS: ShFu

If MyHotKey(vbKeyD) Then DDD: ShFu

End Sub

'锁定,鼠标和键盘

Private Sub Timer3_Timer()

If SSSDDD> 0 Then SSSDDD= SSSDDD- 1

If CC="不可移动" Then Form1.Caption="记录鼠标-锁定鼠标和键盘不可移动"& SSSDDD&"秒后解锁"

If CC="可移动" Then Form1.Caption="记录鼠标-锁定鼠标和键盘可移动"& SSSDDD&"秒后解锁"

If SSSDDD< 1 Then

BlockInput(0)

Form1.Caption="记录鼠标"

CC="停锁记录鼠标"

Timer3.Enabled= False

YhFu

End If'恢复

End Sub

Private Sub SSS()

Form1.Caption="记录鼠标-锁定鼠标和键盘,不可移动"

SSSDDD= InputBox("提示","请问你想锁定多少秒?","10")

CC="不可移动"

Timer3.Enabled= True

BlockInput(5)'锁定,不可移动

End Sub

Private Sub DDD()

Form1.Caption="记录鼠标-锁定鼠标和键盘,可移动"

SSSDDD= InputBox("提示","请问你想锁定多少秒?","10")

CC="可移动"

Timer3.Enabled= True

Call Sleep(SSSDDD)'锁定,可移动

End Sub

'操作时是否可以看到本软件

Private Sub ShFu()'

If Check1.Value= 0 Then Form1.Hide'隐藏

End Sub

Private Sub YhFu()'

If CC="停锁记录鼠标" Then

Form1.Show'显示

CC="鼠标记录"

End If

End Sub

'删除List1中的一行

Private Sub List1_DblClick()'

List1.RemoveItem List1.ListIndex

End Sub

'退出

Private Sub Command6_Click()

End

End Sub

OK,本文到此结束,希望对大家有所帮助。

jmail,JMail的使用方法windows优化王,win7系统优化软件哪个好