📄 form1.frm
字号:
Top = 960
Width = 735
End
Begin VB.ComboBox Com1
DataField = "技能2"
DataSource = "Data3"
Height = 300
Index = 6
ItemData = "Form1.frx":0020
Left = 720
List = "Form1.frx":0022
TabIndex = 53
Text = "F1"
Top = 600
Width = 735
End
Begin VB.ComboBox Com1
DataField = "技能1"
DataSource = "Data3"
Height = 300
Index = 5
ItemData = "Form1.frx":0024
Left = 720
List = "Form1.frx":0026
TabIndex = 52
Text = "F1"
Top = 240
Width = 735
End
Begin VB.Label Label14
Caption = "技能5"
Height = 255
Left = 120
TabIndex = 16
Top = 1680
Width = 615
End
Begin VB.Label Label13
Caption = "技能4"
Height = 255
Left = 120
TabIndex = 15
Top = 1320
Width = 615
End
Begin VB.Label Label12
Caption = "技能3"
Height = 255
Left = 120
TabIndex = 14
Top = 960
Width = 615
End
Begin VB.Label Label11
Caption = "技能2"
Height = 255
Left = 120
TabIndex = 13
Top = 600
Width = 615
End
Begin VB.Label Label10
Caption = "技能1"
Height = 255
Left = 120
TabIndex = 12
Top = 240
Width = 615
End
End
Begin VB.Frame Frame1
Caption = "人物信息"
Height = 1815
Left = 120
TabIndex = 0
Top = 120
Width = 2895
Begin VB.Label Lb6
Caption = "0/0"
Height = 255
Left = 960
TabIndex = 35
Top = 1440
Width = 1815
End
Begin VB.Label Label25
Caption = "经验值:"
Height = 255
Left = 120
TabIndex = 34
Top = 1440
Width = 735
End
Begin VB.Label Lb5
Caption = "0"
Height = 255
Left = 960
TabIndex = 10
Top = 1200
Width = 1695
End
Begin VB.Label Lb4
Caption = "0/0"
Height = 255
Left = 960
TabIndex = 9
Top = 960
Width = 1695
End
Begin VB.Label Lb3
Caption = "0/0"
Height = 255
Left = 960
TabIndex = 8
Top = 720
Width = 1695
End
Begin VB.Label Lb2
Caption = "等级"
Height = 255
Left = 960
TabIndex = 7
Top = 480
Width = 1695
End
Begin VB.Label Lb1
Caption = "人名"
Height = 255
Left = 960
TabIndex = 6
Top = 240
Width = 1695
End
Begin VB.Label Label5
Caption = "元气值:"
Height = 255
Left = 120
TabIndex = 5
Top = 1200
Width = 855
End
Begin VB.Label Label4
Caption = "真气值:"
Height = 255
Left = 120
TabIndex = 4
Top = 960
Width = 855
End
Begin VB.Label Label3
Caption = "生命值:"
Height = 255
Left = 120
TabIndex = 3
Top = 720
Width = 855
End
Begin VB.Label Label2
Caption = "人物等级:"
Height = 255
Left = 120
TabIndex = 2
Top = 480
Width = 855
End
Begin VB.Label Label1
Caption = "角色名称:"
Height = 255
Left = 120
TabIndex = 1
Top = 240
Width = 855
End
End
Begin VB.Label Label27
Caption = "打怪距离(1-9)"
Height = 255
Left = 5160
TabIndex = 42
Top = 3240
Width = 1335
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim hwd As Long
Dim pid As Long
Dim hProcess As Long '存放进程句柄
Dim base As Long '存放人物基地址
Dim hp As Long '存储生命值
Dim maxhp As Long '最大红
Dim mp As Long '蓝
Dim maxmp As Long '最大蓝
Dim ex As Long '经验
Dim yq As Long '元气
Dim level As Long '等级
Private Sub Cm1_Click()
Timer2.Enabled = True
End Sub
Private Sub Cm2_Click()
Timer2.Enabled = False
End Sub
Private Sub Cm3_Click()
On Error Resume Next
Data1.Recordset.Edit
Data1.Recordset.Update
End Sub
Private Sub Cm4_Click()
End
End Sub
Private Sub Cm5_Click()
Form2.Show
End Sub
Private Sub Form_Load()
hwd = FindWindow("ElementClient Window", vbNullString)
If hwd = 0 Then
MsgBox "未启动游戏", vbOKOnly, "提示"
'Unload Form1
End If
GetWindowThreadProcessId hwd, pid '获取进程标识符
'将进程标识符做为参数,返回目标进程PID的句柄,得到此句柄后
'即可对目标进行读写操,PROCESS_ALL_ACCESS表示完全控制,权限最大
hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, pid)
If hProcess = 0 Then
MsgBox "不能打开进程", vbOKOnly, "提示"
'Unload Form1
End If
CloseHandle hProcess
Timer1.Interval = 500
Timer2.Interval = 500
Timer2.Enabled = False
Data1.Visible = False
Data2.Visible = False
Data3.Visible = False
For i = 0 To 9
With Com1(i)
.AddItem "F1"
.AddItem "F2"
.AddItem "F3"
.AddItem "F4"
.AddItem "F5"
.AddItem "F6"
.AddItem "F7"
.AddItem "F8"
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "0"
End With
Next i
End Sub
Private Sub Timer1_Timer()
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess Then
ReadProcessMemory hProcess, ByVal &H3294880, base, 4, 0&
ReadProcessMemory hProcess, ByVal base + &H450, hp, 4, 0& '得到生命值
ReadProcessMemory hProcess, ByVal base + &H478, hp, 4, 0& '得到最大生命值
ReadProcessMemory hProcess, ByVal base + &H450, maxhp, 4, 0& '得到生命值
ReadProcessMemory hProcess, ByVal base + &H448, level, 4, 0& '得到等级
ReadProcessMemory hProcess, ByVal base + &H464, mp, 4, 0& '得到蓝
ReadProcessMemory hProcess, ByVal base + &H47C, maxmp, 4, 0& '得到最大蓝
ReadProcessMemory hProcess, ByVal base + &H458, ex, 4, 0& '得到经验
ReadProcessMemory hProcess, ByVal base + &H464, yq, 4, 0& '得到元气
End If
Lb2.Caption = Str(level)
Lb3.Caption = Str(hp) & "/" & Str(maxhp)
Lb4.Caption = Str(mp) & "/" & Str(maxmp)
Lb5.Caption = Str(yq)
Lb6.Caption = Str(ex) & "/" & "0"
End Sub
Private Sub gethp1()
If Val(Text1.Text) > hp Then '比较当前血量是否比预定值低,是则按下F1健
SendMessage hwd, &H100, Key(Com1(0).Text), 0& '按住F1键,&H100代表按下,&H70代表F1
SendMessage hwd, &H101, Key(Com1(0).Text), 0& '松开F1键,&H101代表松开,&H70代表F1
End If
End Sub
Private Sub gethp2()
If Val(Text2.Text) > hp Then '比较当前血量是否比预定值低,是则按下F1健
SendMessage hwd, &H100, Key(Com1(1).Text), 0& '按住F1键,&H100代表按下,&H70代表F1
SendMessage hwd, &H101, Key(Com1(1).Text), 0& '松开F1键,&H101代表松开,&H70代表F1
End If
End Sub
Private Sub getmp1()
If Val(Text3.Text) > mp Then '比较当前血量是否比预定值低,是则按下F1健
SendMessage hwd, &H100, Key(Com1(2).Text), 0& '按住F1键,&H100代表按下,&H70代表F1
SendMessage hwd, &H101, Key(Com1(2).Text), 0& '松开F1键,&H101代表松开,&H70代表F1
End If
End Sub
Private Sub getmp2()
If Val(Text4.Text) > mp Then '比较当前血量是否比预定值低,是则按下F1健
SendMessage hwd, &H100, Key(Com1(3).Text), 0& '按住F1键,&H100代表按下,&H70代表F1
SendMessage hwd, &H101, Key(Com1(3).Text), 0& '松开F1键,&H101代表松开,&H70代表F1
End If
End Sub
Private Sub getyq()
If Val(Text5.Text) < yq Then '比较当前血量是否比预定值低,是则按下F1健
SendMessage hwd, &H100, Key(Com1(4).Text), 0& '按住F1键,&H100代表按下,&H70代表F1
SendMessage hwd, &H101, Key(Com1(4).Text), 0& '松开F1键,&H101代表松开,&H70代表F1
End If
End Sub
Private Sub getj1()
SendMessage hwd, &H100, Key(Com1(5).Text), 0& '按住F1键,&H100代表按下,&H70代表F1
SendMessage hwd, &H101, Key(Com1(5).Text), 0& '松开F1键,&H101代表松开,&H70代表F1
End Sub
Private Sub getj2()
SendMessage hwd, &H100, Key(Com1(6).Text), 0& '按住F1键,&H100代表按下,&H70代表F1
SendMessage hwd, &H101, Key(Com1(6).Text), 0& '松开F1键,&H101代表松开,&H70代表F1
End Sub
Private Sub getj3()
SendMessage hwd, &H100, Key(Com1(7).Text), 0& '按住F1键,&H100代表按下,&H70代表F1
SendMessage hwd, &H101, Key(Com1(7).Text), 0& '松开F1键,&H101代表松开,&H70代表F1
End Sub
Private Sub getj4()
SendMessage hwd, &H100, Key(Com1(8).Text), 0& '按住F1键,&H100代表按下,&H70代表F1
SendMessage hwd, &H101, Key(Com1(8).Text), 0& '松开F1键,&H101代表松开,&H70代表F1
End Sub
Private Sub getj5()
SendMessage hwd, &H100, Key(Com1(9).Text), 0& '按住F1键,&H100代表按下,&H70代表F1
SendMessage hwd, &H101, Key(Com1(9).Text), 0& '松开F1键,&H101代表松开,&H70代表F1
End Sub
Private Function Key(Anjian As String) As Long '用于转换按键的函数
Select Case Anjian
Case "F1"
Key = &H70 'F1
Case "F2"
Key = &H71 'F2
Case "F3"
Key = &H72 'F3
Case "F4"
Key = &H73 'F4
Case "F5"
Key = &H74
Case "F6"
Key = &H75
Case "F7"
Key = &H76
Case "F8"
Key = &H77
Case "1"
Key = &H31 '1
Case "2"
Key = &H32 '2
Case "3"
Key = &H33 '3
Case "4"
Key = &H34
Case "5"
Key = &H35
Case "6"
Key = &H36
End Select
End Function
Private Sub Timer2_Timer()
Static i As Integer
gethp1
gethp2
getmp1
getmp2
getyq
i = i + 1
Select Case i
Case 1: getj1
Case 2: getj2
Case 3: getj3
Case 4: getj4
Case 5: getj5
End Select
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -