![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здраствуйте.
Хочу сделать трейнер на Brood War на минералы. Есть адрес и размер. Используя ReadProcessMemory не получаю нужного значения. Переменные и константы: Код:
var Form1: TForm1; WindowName : integer; ProcessId : integer; ThreadId : integer; HandleWindow : Integer; written : cardinal; read:pchar; Const WindowTitle = 'Brood War'; Address = $0057F0F0; Процедура: Код:
procedure TForm1.Button1Click(Sender: TObject); var WindowName:hwnd; begin windowname:=FindWindow(nil,WindowTitle); ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId); HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId); readProcessMemory(HandleWindow,ptr(Address),@read,4,written); showmessage(read); CloseHandle(HandleWindow); end; Пробовал в другой игре.. всё пашет отлично. Артманей значение редактируется без проблем. А со старкрафтом траблы. ![]() Прощу помощи иль совета какова как енту проблему решить. |
#2
|
|||
|
|||
![]() Оказывается дело не в процедуре.
Я пробовал изменить значение адреса другими программами похожими на ArtMoney. Ни в одной программе процесса StarCraft.exe небыло. А артмани спокойно справляется. Похоже в артмани другой подход к процессам. ****** Код:
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId); OpenProcess возвращает 0. Хотя должен выдать дескриптор процесса. Может кто обьяснит почему так, или подскажет альтернативное решение? Последний раз редактировалось Sevenfold, 07.05.2010 в 12:18. |