Пытался написать трейнер на VB, так как проги типа Magis Trainer Creator создают малофункциональные трейнеры. Так вот накопал инфу, нацарапал код, сел с довольным лицом перед компом, начал компилить проект. А тут выскакивает меседж со словами: Переменная не определена. Ну короче тут код луче приведу, для лучего понятия:
Модуль:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String)As Long 'У вас все должно быть в одну строчку
Declare Function GetWindowThreadProcessld Lib "user32"(ByVal hwnd As Long,lpdwProcessld As Long)As Long
Declare Function OpenProcess Lib "kernel32"(ByVal dwDesiredAcess As Long,ByVal blnheritHandle As Long,ByVal dwProcessld As Long)As Long
Declare Function WriteProcessMemory Lib "kernel32"(ByVal hProcess As Long,ByVal lpBaseAdress As Any,ByVal lpBuffer As Any, ByVal nSize As Long,lpNumberOfBytesWritten As Long)As Long
Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long,ByVal lpBaseAddess As Any,ByVal lpBuffer As Any, ByVal nSize As Long,lpNumberOfBytesWriten As Long)As Long
Declare Function CloseHandle Lib "kernel32"(ByVal hObject As Long)As Long
Сам проект:
Private Sub Command1_Click() 'Объявляем необходимый код для кнопки
Dim hwnd As long 'Удерживаем управление, переданное функцией FindWindow
Dim pid As Long 'Используется для хранения идентификатора процесса
Dim pHandle As Long 'Держит управление процессом
'Ищем окно игры, и если игра не запущена выдаем сообщение об ошибке.
hwnd = FindWindow(vbNullString,"Ваш заголовок окна игры") 'Заголовок окна игры можно узнать по надписи на кнопке свернутого окна, нажав Alt+Tab во время игры
If(hwnd=0) Then
MsgBox "Window not found"
Exit Sub
End If
'Теперь определяем идентификатор процесса.
GetWindowThreadProcessld hwnd,pid
'Используем этот идентификатор для получения управления процессом.
pHandle =OpenProcess(PROCESS_ALL_ACCESS,False,pid)
If(pHandle=0)Then
MsgBox "Couldn't get a process handlel"
Exit Sub
End If
'Записываем новое значение в память по нужному адресу
WriteProcessMemory pHandle,&H0448СB79,"Beans",5,0& 'За место &H0448СB79 вставте свой.
'Прекращаем управлять процессом.
CloseHandle hProcess
End Sub
Private Sub ReadTimer_Timer()'объявляем некоторые необходимые моменты для таймера.
Dim hwnd As Long 'Удерживает управление,переданное функцией FindWindow
Dim pid As Long 'Удерживает идентификатор процесса.
Dim pHandle As Long 'Удерживает управление процессом.
Dim str As String*20 'Параметр текстовой строки
'Вначале ищем окно игры
hwnd = FindWindow(vbNullString,"Ваш заголовок окна игры")
If(hwnd=0) Then Exit Sub
GetWindowThreadProcessld hwnd,pid 'Определяем идентификатор процесса.
'Используем идентификатор для управления процессом.
pHandle =OpenProcess(PROCESS_ALL_ACCESS,False,pid)
If(pHandle=0)Then Exit Sub
'Теперь можно прочитать из памяти
ReadProcessMemory pHandle, &H0448СB79,str,20,0&
'Покажим строку в текстовом поле
txtDisplay=str
'Прекращаем управлять процессом.
CloseHandle hProcess
End Sub
И при компиляции выскакивает, как я уже говорил сообщеньице Величина не определена и выделяет -PROCESS_ALL_ACCESS-
Как быть? Пытался уже её определить, ни чо не выходит. Или это опять глюк XP винды?
Ответить
|