求高人翻译一下这段代码
vb吧
全部回复
仅看楼主
level 5
Option Explicit
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function EnumProcesses Lib "psapi.dll" (ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Private Declare Function EnumProcessModules Lib "psapi.dll" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef lpcbNeeded As Long) As Long
Private Declare Function GetModuleFileNameEx Lib "psapi.dll" Alias "GetModuleFileNameExA" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As Long
Private Declare Function GetProcessImageFileName Lib "psapi.dll" Alias "GetProcessImageFileNameA" (ByVal hProcess As Long, ByVal lpImageFileName As String, ByVal nSize As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Const MEM_COMMIT = &H1000
Private Const MEM_RESERVE = &H2000
Private Const MEM_RELEASE = &H8000
Private Const PAGE_READWRITE = &H4
Private Const PROCESS_VM_OPERATION = (&H8)
Private Const PROCESS_VM_READ = (&H10)
Private Const PROCESS_VM_WRITE = (&H20)
Private Const PROCESS_QUERY_INFORMATION = &H400      '进程信息
Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF '所有权限
Private addr(1) As Long
Private mValue(1) As Long
Private Sub Command1_Click()
     Dim hGame As Long
    
     If pidtxt.Text = 0 Then
         MsgBox "游戏未运行!", 0, "警告"
         Exit Sub
     End If
    
     hGame = OpenProcess(PROCESS_ALL_ACCESS, False, CLng(pidtxt.Text))
     'MsgBox hGame
     ReadProcessMemory hGame, ByVal addr(0), mValue(0), Len(mValue(0)), 0&
     ReadProcessMemory hGame, ByVal addr(1), mValue(1), Len(mValue(1)), 0&
     Text1.Text = mValue(0)
     Text2.Text = mValue(1)
     CloseHandle hGame
End Sub
Private Sub Command2_Click()
     Dim hGame As Long
    
     hGame = OpenProcess(PROCESS_ALL_ACCESS, False, CLng(pidtxt))
    
     If pidtxt.Text = 0 Then
         MsgBox "游戏未运行!", 0, "警告"
         Exit Sub
     End If
     WriteProcessMemory hGame, ByVal addr(0), CLng(Text1.Text), Len(mValue(0)), 0&
     WriteProcessMemory hGame, ByVal addr(1), CLng(Text2.Text), Len(mValue(1)), 0&
     'Text1.Text = mValue
     CloseHandle hGame
End Sub
Private Sub Text3_Change()
End Sub
Private Sub Form_Load()
     Dim mpid() As Long
    
     mpid = FindProcessByWindowCaption("北京浮生记")
     pidtxt.Text = mpid(0)
    
     addr(0) = &H12F52C
     addr(1) = &H12F530
End Sub
2010年07月10日 07点07分 1
level 9
api有什么好翻译的?对这msdn看解释不就都清楚了?英文看不懂、旁边再放一个google translate
2010年07月10日 08点07分 2
level 10
额,这个不是我之前写的么,发在www.cmd58.com上的,是读写内存修改北京浮生记(一个游戏)的金钱数。
2010年07月10日 08点07分 3
level 5
回复:3楼
正是
2010年07月10日 08点07分 4
level 10
回复:4楼
就是改写内存
2010年07月10日 09点07分 5
level 7
Private Declare Function 后面跟的那个拿到百度或google里搜索下就有资料了
2010年07月10日 11点07分 6
level 5
回复:5楼
内存地址(004D302C)在VB中怎么写
2010年07月10日 12点07分 7
写成&H004D302C的形式
2021年10月24日 05点10分
level 5
回复:8楼
非常感谢。能教一下方法吗?
2010年07月10日 13点07分 9
1