Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2009, 00:58   #1
Ghennadiy
Форумчанин
 
Регистрация: 21.08.2009
Сообщений: 153
Счастье Память

Помогите пожалуйста разобратся:
Программа при запуске пишет переменную в адрес памяти, но при следующем запуске адрес памяти менияется. Можно найти адрес через Cheat Engine например, но он потом опять изменется. Нужно что бы прога на Delphi сама искала адрес этой переменной и ставила ее себе на поток.
Ghennadiy вне форума Ответить с цитированием
Старый 21.08.2009, 07:00   #2
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

А если переменную в файл сохранять?
Вам вообще для чего это надо. Может есть способ по проще...
Altera вне форума Ответить с цитированием
Старый 21.08.2009, 09:06   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Нужно что бы прога на Delphi сама искала адрес этой переменной и ставила ее себе на поток.
Зачем?? при запуске все используемые переменки загрузчик расставит как надо.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.08.2009, 09:14   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Используйте указатели. Или Вам необходимо контролировать чужие данные по типу ArtMoney?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 21.08.2009, 16:33   #5
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Это типа трейнер для игр, я полагаю. Наверняка можно найти смещение адреса.
Alter вне форума Ответить с цитированием
Старый 21.08.2009, 16:51   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в стары играх адреса были постоянные.
а в новых можно найти указатель который хранит в себе нужную переменную(то есть адрес её)
и использовать его
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.08.2009, 22:19   #7
Ghennadiy
Форумчанин
 
Регистрация: 21.08.2009
Сообщений: 153
Радость

Осцилограф! Переменная постоянно меняется и ее нужно подхватить для дальнейшей обработки уже в другой программе
Цитата:
Используйте указатели
можно подробнее пожалуйста

Немножко разобрался: по адресу есть указатель который пишет значение Double, может кото подскажет с кодом, нужно отобразить эту переменную в проге делфи в Edit text

может кто поможет оптимизировать код что бы работал с Double..
и еще вопрос, как поменять поиск не по заголовку окна а по запущеному процессу?

Код:
procedure TForm1.Button2Click(Sender: TObject);
var hWnd : THandle;
    ipBase: Pointer;
    IpBuf : PWideChar;
    hProc, PID, numberRead : DWORD;
begin
 hWnd:=FindWindow(nil, 'Delphi - 7');
 Edit1.Text:=inttostr(hWnd);
 GetWindowThreadProcessId(hWnd, @PID); //ïîëó÷àåì pid çíàÿ õýíäë îêîøêà èíòåðåñóþùåé íàñ ïðîãðàììû
 Edit2.Text:=inttostr(PID); // çàíîñèì â edit ID
 ipBase:=ptr($01756398);
 hProc:=OpenProcess(PROCESS_VM_READ, False, PID);
 Edit3.Text:=inttostr(hProc); // çàíîñèì â edit Process
 ReadProcessMemory(hWnd, ipBase, Addr(ipbuf), 4, numberRead);
 Edit4.Text:=WideCharToString(ipbuf); // çàíîñèì â edit Buffer
 CloseHandle(hProc);
//FreeMem(ipBuf); // îñâîáîæäàåì ïàìÿòü
--------------
в Edit4.Text выдает следубщее: ??????????????????????????????????? ?????R????????????????????????????? ??????????????????þ????????~??????? Q??????????????D??????????????????? ?????Q????????????????????????????? ????S?????????????????@??????????? ???p??
end;

Если поменять PWideChar на String, что пологаю и нужно то не выдет ничего, а нужно считать значение Double

Последний раз редактировалось Stilet; 25.08.2009 в 09:21.
Ghennadiy вне форума Ответить с цитированием
Старый 24.08.2009, 17:15   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Ghennadiy Посмотреть сообщение
->и еще вопрос, как поменять поиск не по заголовку окна а по запущеному процессу?
поиск по форуму.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.08.2009, 02:42   #9
Ghennadiy
Форумчанин
 
Регистрация: 21.08.2009
Сообщений: 153
Счастье

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
поиск по форуму.
нету .
Ghennadiy вне форума Ответить с цитированием
Старый 25.08.2009, 09:23   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нету .
Есть. Вот пример получения списка процессов.
http://www.programmersforum.ru/showt...Help32SnapShot
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
оперативная память Pr1meEX Помощь студентам 3 16.06.2009 23:28
Динамическая память. Пaвeл Помощь студентам 16 31.05.2009 21:16
Динамическая память liver1981 Общие вопросы C/C++ 5 22.04.2009 09:16
Память процесса BlackOmen Общие вопросы Delphi 3 24.10.2008 20:16
Память процессов Carbon Безопасность, Шифрование 2 05.05.2007 23:59