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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2014, 22:18   #1
Drabadan
 
Регистрация: 06.03.2014
Сообщений: 5
По умолчанию Вопрос от новичка по ReadProcessMemory

Здравствуйте форумчане.
Я нубас самоучка и мне сложновато даются некоторые материи. Попрошу не судить строго, кидаться тапками можно но не сильно!

Итак, есть код, это процедурка которая читает из памяти процесса цифру нужную мне, механизм - читаем из статик адреса который записан в константе - адрес к которому добавляется смещение и получаем нужное нам значение:
Код:
...
const
  staticPointer = $140b198b0; //win7 64bit ноутбук
//staticPointer = $010fefac; //win XP 86bit комп на работе

function TForm1.ReadMemory_Int : Integer;
var
  _Value1, _Value2 : Integer;
  hWND : Integer;
  PID, hProc : Integer;
  bufSize : SIZE_T;
begin
  hWND := FindWindow(nil, PChar('World of Warcraft'));
  if hWND > 0 then
    begin
      GetWindowThreadProcessId(hWND, @PID);
      hProc := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
      if PID > 0 then
        begin
          if ReadProcessMemory(hProc, ptr(staticPointer), @_Value1, 4, bufSize) then
            if ReadProcessMemory(hProc, ptr(_Value1 + OffsetList[Self.ComboBox1.ItemIndex].Offset), @_Value2, 4, bufSize) then
              Result := _Value2
          else
            Result := 0;
        end
      else
        ShowMessage('Error in ReadMemory section.');
    end
  else
    ShowMessage('No window found');
end;
Теперь загвоздка - на работе все читается на ура, дома не читается ничего...
Пробовал менять параметр SIZE_T nSize в ReadProcessMemory на 8 и 16, никакого эффекта! Компилил под 64 бит таргет платформу - тоже ноль результата.

UPD1. Вчера после некоторых манипуляция GetLastError выдал Error 299 PARTIAL_COPY; Поменял интегеры на Int64 - легче не стало

Надеюсь на ваши подсказки, куда копать дальше!
Буду признателен за любые советы или твик кода!

Последний раз редактировалось Drabadan; 19.03.2014 в 21:13.
Drabadan вне форума Ответить с цитированием
Старый 21.03.2014, 00:56   #2
Drabadan
 
Регистрация: 06.03.2014
Сообщений: 5
По умолчанию

проблема решена, у приложения есть реализация екзешника для х86 систем, там поинтеры обычные! все скомпилилось все работает, всем спасибо за внимание
Drabadan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос от новичка Валерий718 Помощь студентам 4 23.10.2013 19:28
Вопрос по ReadProcessMemory Alexey_68 Общие вопросы C/C++ 5 28.03.2013 03:33
Вопрос новичка geranton Общие вопросы Delphi 2 23.03.2012 14:00
Вопрос новичка vaultboy2010 Общие вопросы C/C++ 3 02.10.2011 01:51