这里先给出一个,偶自己编写的自动红蓝程序,但是偶不是想让你看怎么自动红蓝,而是让你看看怎么使用CE软件,查内存。API函数也米什么,你多看看API函数的说明你就会了。不多说,程序清单如下:
表单中:
Dim SetHp As Integer ' 定义设定的体力值
Dim SetMp As Integer ' 定义设定的魔法值
Dim NowHp As Long ' 定义目前的体力值
Dim NowMp As Long ' 定义目前的魔法值
Dim MaxHp As Long ' 定义角色的最高体力值
Dim MaxMp As Long ' 定义角色的最高魔法值
Dim DiZhi As Long '定义内存地址函数
'Private Sub Command1_Click()
'Timer1.Enabled = False
'Timer2.Enabled = True
'Timer3.Enabled = True
'End Sub

Private Sub Form_Load()
' 体力:07F68F3 这里替换你所搜索到的地址 魔法:07F6860 同前
DiZhi = &H44021E0
Timer1.Enabled = True
Timer2.Enabled = False
Timer3.Enabled = False
End Sub


'Private Sub Form_Unload(Cancel As Integer)
'Timer1.Enabled = True
'Timer2.Enabled = False
'Timer3.Enabled = False
'End Sub

Private Sub Timer1_Timer()
Dim hwnd As Long
hwnd = FindWindow(vbNullString, "YB_OnlineClient")

If hwnd = 0 Then
Label3.Caption = "游戏未加载"
Label4.Caption = ""
Timer1.Enabled = True
Timer2.Enabled = False
Timer3.Enabled = False
Exit Sub
Else
Timer2.Enabled = True
Timer3.Enabled = True
Label3.Caption = ""
Label4.Caption = "游戏已加载"
SetHp = Text1.Text ' 获取设定的体力值
SetMp = Text2.Text ' 获取设定的魔法值
NowHp = ncnr(DiZhi) ' 获取当前的体力值
NowMp = ncnr(DiZhi + 4) ' 获取当前的魔法值
MaxHp = ncnr(DiZhi + 12) ' 获取角色的最高体力值
MaxMp = ncnr(DiZhi + 16) ' 获取角色的最高魔法值
Text3.Text = NowHp
Text4.Text = NowMp
End If
End Sub

Private Sub Timer2_Timer()
Dim MPKey
' 体力值小于设定值按下数字键1
If NowHp < SetHp Then                 '这2组动作表示模拟按下一个键
MPKey = CInt(VK_F2)
Call keybd_event(CByte(MPKey), MapVirtualKey(CByte(MPKey), 0), 0, 0)    '第3个参量0表示按下
Sleep 500
Call keybd_event(CByte(MPKey), MapVirtualKey(CByte(MPKey), 0), KEYEVENTF_KEYUP, 0)  '第3个参量KEYEVENTF_KEYUP表示抬起
End If
End Sub

Private Sub Timer3_Timer()
Dim MPKey
' 魔法值小于设定值按下数字键2
If NowMp < SetMp Then
MPKey = CInt(VK_F3)
Call keybd_event(CByte(MPKey), MapVirtualKey(CByte(MPKey), 0), 0, 0)
Sleep 500
Call keybd_event(CByte(MPKey), MapVirtualKey(CByte(MPKey), 0), KEYEVENTF_KEYUP, 0)
End If
End Sub
 '--------------------------------------------------------------------------------------------------------------------------------------------------------
模块中:
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function GetCurrentProcess Lib "kernel32" () As Long
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'进程常量
Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
Public Const SYNCHRONIZE = &H100000
Public Const SPECIFIC_RIGHTS_ALL = &HFFFF
Public Const STANDARD_RIGHTS_ALL = &H1F0000
Public Const PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF
Public Const PROCESS_VM_OPERATION = &H8&
Public Const PROCESS_VM_READ = &H10&
Public Const PROCESS_VM_WRITE = &H20&
'鼠标常量
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Const MOUSEEVENTF_MIDDLEDOWN = &H20
Public Const MOUSEEVENTF_MIDDLEUP = &H40
Public Const MOUSEEVENTF_MOVE = &H1 '移动鼠标
Public Const MOUSEEVENTF_ABSOLUTE = &H8000
Public Const MOUSEEVENTF_RIGHTDOWN = &H8
Public Const MOUSEEVENTF_RIGHTUP = &H10
'键盘常量
Public Const VK_F1 As Long = &H70
Public Const VK_F2 As Long = &H71
Public Const VK_F3 As Long = &H72
Public Const VK_F4 As Long = &H73
Public Const VK_F5 As Long = &H74
Public Const VK_F6 As Long = &H75
Public Const VK_F7 As Long = &H76
Public Const VK_F8 As Long = &H77
Public Const VK_F9 As Long = &H78
Public Const KEYEVENTF_KEYUP As Long = &H2


Public Function ncnr(lpADDress As Long) As Integer
' 声明一些需要的变量
Dim hwnd As Long ' 储存 FindWindow 函数返回的句柄
Dim pid As Long ' 储存进程标识符( ProcessId )
Dim hProcess As Long ' 储存进程句柄
hwnd = FindWindow(vbNullString, "YB_OnlineClient")
' 取得进程标识符
GetWindowThreadProcessId hwnd, pid
' 使用进程标识符取得进程句柄
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
' 在内存地址中读取数据
ReadProcessMemory hProcess, ByVal lpADDress, ByVal VarPtr(ncnr), 4, 0&
' 关闭进程句柄
CloseHandle hProcess
End Function



注释:timer控件中interval属性不能为0

这个是热血江湖里边的红蓝代码。当时查找的具体内存值偶忘记了,偶只告诉你一个方法。打开CE软件,加载热血江湖进程,然后进入到游戏中。假如你游戏角色的当前血值是1300,你就在CE软件value处输入要查找的数值1300,在下边的scan type 选精确查找,类型选4个字节肯定够用吧。点first scan,然后再查几次,会出现几个数值,偶这里出现4个,那么你玩一会观察哪个数值变化了,这里就有一个数值变化了,那么他所在的地址就是内存地址。这是当前红的查找,至于当前蓝,最大蓝,最大红,查找方法同理。上边的程序清单中只给出了一个地址,其他地址是通过换算出来的。关于CE的详细使用方法,请参阅附件。