Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Надпись в чужом процессе [D7, XP]


Страницы:   1 2

kester ©   (2010-12-29 18:29:00) 

Здравствуйте.

Вопрос вот в чем: в чужом приложении периодически появляется строка с текстом (непонятно что это за компонент). Текст строки известен. Необходимо проверять наличие этой строки. Надо как то искать в памяти процесса? Если да то как?

Спасибо.


Студент   (2011-01-09 06:26:00) [1]

А вы пробовали смотреть чужое окно через Spy++ и аналогами? Уверен в подавляющем количестве случаев достаточно GetWindowText...


> А если такая строка (в смысле значение) висит в памяти как
> константа?


Разумеется висит...) Куда ж она денется, если "периодически появляется"?)
Разве что из файла берёт каждый раз...


HF-Trade   (2011-01-03 06:22:00) [2]

Как то так...

Var
H: THandle;
pid, RetVal, pHandle: DWord;
MSG: Array[0..1023] of WideChar;
Begin
H := FindWindow('Имя чужого окна', nil);
GetWindowThreadProcessId(H, pid);
pHandle := OpenProcess(PROCESS_ALL_ACCESS, False, pid);
ReadProcessMemory(pHandle, Ptr($000000{Адрес из артмани}) ,@MSG, 4{Кол-во байт}, RetVal);
Stroka := MSG;


Amoeba_   (2010-12-30 18:49:00) [3]


> Rак мне определить по каким адресам прогонять цикл?

Да ни как.
Ответа на вопрос нет и не может быть.


Сергей М.   (2010-12-30 15:35:00) [4]


> В смысле ой?


Ну не надо значит не надо, я же не возражаю)


kester   (2010-12-30 15:19:00) [5]

Ну я имел ввиду то, что после того как она первый раз появилась, больше ничего делать не надо. В смысле ой?


12   (2010-12-30 15:19:00) [6]

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

http://www.google.ru/webhp?rls=ig#num=20&hl=ru&newwindow=1&rls=ig&biw=1280&bih=814&q=writeprocessmemory+delphi+%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=c7a3af04a750e359


Сергей М.   (2010-12-30 15:01:00) [7]


> абсолютно не парит


Ну тады ой)


kester   (2010-12-30 14:58:00) [8]


> Или тебя не парит необходимость обнаружения отсутствия строки
> ?

Да, абсолютно не парит. После обнаружения присутствия и сигнала о нем, программа завершает работу.


Сергей М.   (2010-12-30 14:55:00) [9]

> строка появляется на продолжительное время

А пропадает, к примеру, на доли миллисекунды.
Или тебя не парит необходимость обнаружения отсутствия строки ?


kester   (2010-12-30 14:48:00) [10]


> Если факт появления строки нужно обнаружить мгновенно, то
> глупее затеи не придумать.

Нет, не мгновенно, строка появляется на продолжительное время. Проверку планируется сделать с интервалом раз в минуту. Просто поставлю проверку на таймер.


Сергей М.   (2010-12-30 14:40:00) [11]

> мне просто нужно повторить процедуру артмани

Если факт появления строки нужно обнаружить мгновенно, то глупее затеи не придумать.


kester   (2010-12-30 14:36:00) [12]

Rак мне определить по каким адресам прогонять цикл? Какие параметры должны быть в ReadProcessMemory?


kester   (2010-12-30 12:38:00) [13]


> А если такая строка (в смысле значение) висит в памяти как
> константа? Ведь она откуда то берется? И чего тогда там
> искать? А если такое сочетание 5-и байт случайно встретится
> в памяти? Мало ли чего там валяется?

Через ArtMoney проверил. Все получается, если строка висит - то артмани находит. Строки нет - не находит. Выходит мне просто нужно повторить процедуру артмани.


Dennis I. Komarov   (2010-12-30 12:32:00) [14]

А если такая строка (в смысле значение) висит в памяти как константа? Ведь она откуда то берется? И чего тогда там искать? А если такое сочетание 5-и байт случайно встретится в памяти? Мало ли чего там валяется?


12   (2010-12-30 12:09:00) [15]

а она там точно есть?
посмотрите ArtMoney(что это игровая приблуда - внимания не обращать), читает процессы и ищет байты. Может и не найдется такой строки


kester   (2010-12-30 12:04:00) [16]


> Ты вопросы пришел задавать, код просить или работу предлагать?
>  Ты уж определись...


Просто очень нужно решить такую задачу. Я пробую сам делать, но мне немного не разобраться, вот и прошу помощи у вас. Просто немного обидело то, что отправили сразу в гугл и все. Естественно, что я сначала поисковики посмотрел. Там есть примеры, да, но немного не то, что мне нужно, тем более я недостаточно хорошо соображаю, чтобы с ними разобраться. Тем более в последние 3 года я очень редко прибегаю к программированию, а сейчас вот опять начал и вспоминается очень с трудом и не все.


> Каждое подчеркнутое требует детального уточнения...


Нужно проверить есть ли в памяти процесса данная строка или нет. Я понимаю, что нужно написать какой то цикл, который последовательно байтам будет проверять содержимое памяти (видимо, с помощью ReadProcessMemory). Если комбинация из 5 байт совпадает с нужными, то 1. Если нигде такой комбинации не нашлось в памяти процесса, то 0. Я мыслю правильно или нет?
Если правильно, то как мне определить по каким адресам прогонять цикл? Какие параметры должны быть в ReadProcessMemory?

Если неправильно, поправьте пожалуйста.

Заранее спасибо!


Dennis I. Komarov   (2010-12-30 09:00:00) [17]


> а код функции не могут привести даже за бабло,

Ты вопросы пришел задавать, код просить или работу предлагать? Ты уж определись...

Да, и еще. Ты [0] перечетай и подумай, как человек не видя (зная) чего там где творится может ответить?


> в чужом приложении периодическипоявляется строка с текстом
> ( непонятно что это за компонент). Текст строки известен.
>   Необходимо проверятьналичие этой строки. Надо как то искать
> в памяти процесса? Если да то как?

Каждое подчеркнутое требует детального уточнения...


kester   (2010-12-30 08:04:00) [18]

Не понимаю смысла в форуме "Начинающим" если тут начинающему в качестве совета кидают ссылку на гугл, а код функции не могут привести даже за бабло, хотя я думаю она не очень сложная, вряд ли больше строчек 30.


Германн   (2010-12-30 01:49:00) [19]


> По поводу ссылки спасибо, очень помогла.

Если "очень помогла", то зачем платить деньги за "рабочий код"?
А в целом ты не по адресу, имхо.
Тебе нужно обратиться либо сюда:
http://www.delphikingdom.com/notice/putinfo.asp?CategoryID=7
либо сюда:
http://forum.sources.ru/index.php?showforum=149


kester   (2010-12-30 01:04:00) [20]

Нужен код, который будет в памяти процесса (хэндл окна процесса известен) искать определенную строку (5 известных символов). Просто проверять на наличие строки, 0 или 1, никаких адресов и тд. Очень нужно, за рабочий код отблагодарю материально.

По поводу ссылки спасибо, очень помогла.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо