Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];

Вниз

Надпись в чужом процессе   Найти похожие ветки 

 
kester   (2010-12-29 18:29) [0]

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

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

Спасибо.


 
Дмитрий С ©   (2010-12-29 18:46) [1]

Если в памяти, то можно например
ReadProcessMemory вроде.

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


 
kester   (2010-12-29 23:10) [2]

Можно попросить Вас ссылочку поподробнее про ReadProcessMemory, а то гугл ничего понятного для нуба не воспроизводит.


 
Rouse_ ©   (2010-12-29 23:16) [3]


>  kester   (29.12.10 23:10) [2]
>
> Можно попросить Вас ссылочку поподробнее

http://3fw.ru/190


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

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

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


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


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

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


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

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


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


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

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

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


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

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


 
kester   (2010-12-30 12:04) [8]


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


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


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


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

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

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


 
12 ©   (2010-12-30 12:09) [9]

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


 
Dennis I. Komarov ©   (2010-12-30 12:32) [10]

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


 
kester   (2010-12-30 12:38) [11]


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

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


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

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


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

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

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


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


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

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


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

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

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


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


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

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


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


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


Ну тады ой)


 
12 ©   (2010-12-30 15:19) [18]

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

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


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

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


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


> В смысле ой?


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


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


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

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


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

Как то так...

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;


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

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


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


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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.004 c
15-1292707792
Юрий
2010-12-19 00:29
2011.04.03
С днем рождения ! 19 декабря 2010 воскресенье


11-1213908689
Dy1
2008-06-20 00:51
2011.04.03
ToolBar


1-1251565145
LightGreen
2009-08-29 20:59
2011.04.03
Фокус ввода - как в Windows


15-1292880591
Юрий
2010-12-21 00:29
2011.04.03
С днем рождения ! 21 декабря 2010 вторник


6-1236188615
dron1990
2009-03-04 20:43
2011.04.03
технология DCOM





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский