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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2015, 12:08   #1
ddwnik
Пользователь
 
Регистрация: 02.09.2014
Сообщений: 22
По умолчанию Сканер процесса

Доброго времени суток.
Уже пол дня думаю, и не пойму - почему не выводится ни одного значения в Memo.

Программа сканит текст "Создать".
Но ничего не происходит(
Прошу помощи!

Код:

var
  Form1: TForm1;
  ProcessID: DWord;
 ProcessHandle: THandle;
 Mbi: TMemoryBasicInformation;
 Addr: DWord;
 Value: string;
 I: Cardinal;
 Buf: PChar;
 BytesRead: DWord;
 len   : integer;

 implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var
h:THandle;
begin

len   := 17;
Buf := AllocMem(len);
Value:='Создать';
 H:=FindWindow(Nil,'Ножницы');
GetWindowThreadProcessId(h, ProcessID);
ProcessHandle := OpenProcess(Process_All_Access, false, ProcessID);
ShowMessage(IntTostr(h));
 while VirtualQueryEx(ProcessHandle, Pointer(Addr), Mbi, SizeOf(Mbi)) <> 0 do
  begin
   if (Mbi.State = MEM_COMMIT) and not ((Mbi.Protect and PAGE_GUARD) = PAGE_GUARD) then
   begin
     GetMem(Buf, Mbi.RegionSize);
    try

     if ReadProcessMemory(ProcessHandle, Mbi.BaseAddress, Buf,
       Mbi.RegionSize, BytesRead) then
     begin

     for I := 0 to BytesRead - SizeOf(Value) do
      begin
      Application.ProcessMessages;  
     
       {Текст - Unicode}
  
     if WideCharToString(@(Buf[I])) =Value then begin
 
 //if (PChar(@Buf[I])) =Value then begin

 memo1.Lines.Add ('Value ' + (Value) + ' found at ' + IntToHex(Integer(Cardinal(Mbi.BaseAddress) + I), 8));

      end;
      end;
     end
     else
    finally
     FreeMem(Buf);
    end;
   end;
   Addr := Addr + Mbi.RegionSize;
  end;


  CloseHandle(ProcessHandle);

end;

end.
ddwnik вне форума Ответить с цитированием
Старый 04.02.2015, 19:38   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

может и выполнение до memo1.Lines.Add просто не доходит?
поюзай дебаггер и/или допиши там ветку else.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
через API получаю полный путь и название процесса, а получаю только название процесса Den7656 Win Api 5 12.09.2011 09:03
Запуск процесса в потоке, завершение процесса в указааноое время, Дайте совет Человек_Борща Общие вопросы Delphi 3 29.08.2010 12:58
Сканер faustpatron13 Мультимедиа в Delphi 0 05.08.2010 10:37
сканер SIRIUSVITI Работа с сетью в Delphi 1 11.06.2009 10:49