Форум: "Начинающим";
Текущий архив: 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