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

Вниз

Как вытащить содержимое ячейки StringGrid а ЧУЖОЙ программы   Найти похожие ветки 

 
Nimbus   (2003-03-16 21:30) [0]

Доброго времени суток, Мастера!

Посоветуйте, plz, каким образом можно это (см. SUBJ) сделать средствами API Windows (или может ещё как-то).


Заранее СПАСИБО вам за помощь!


 
Nimbus   (2003-04-01 22:51) [1]

...неужели никто не сталкивался с подобной проблемой?! :-)


 
Morfein   (2003-04-01 23:00) [2]

Скорее всего никак... только если найти точку размещения этого stringgrid"a в памяти того процесса... потом используя опытным путём полученные offset"ы, найти указатель на массив данных и читать его... но это всё из области фантастики :) не то что бы невозможно, но сложно, нудно и бессмысленно!


 
Suntechnic   (2003-04-02 01:50) [3]

>Nimbus ©
Только средствами API это действительно из разряда фантастики, но можно попробовать средствами VCL...

Внедряться в чужое адресное пространство придётся полюбому, а вот дальше можно попробовать использовать ф-цию FindControl.


 
Игорь Шевченко   (2003-04-02 13:31) [4]

Нет смысла в подобной задаче. У StringGrid"a может быть переменная высота строк, переменная ширина столбцов, и т.п. Из чужого приложения в общем случае ее не вытащить


 
Nimbus   (2003-04-03 17:52) [5]


> Игорь Шевченко ©

Спасибо, обнадёжили!!! :-(
А что Вы, Игорь, скажете на вариант, предложенный Suntechnic "ом?? Я могу, конечно, заблуждаться, но, что-то в этом есть.


 
Игорь Шевченко   (2003-04-03 19:13) [6]

Nimbus © (03.04.03 17:52)

Теоретически возможно все, в том числе и найти адрес в памяти чужого процесса, где расположены свойства StringGrid"a и при чтении учитывать значения этих свойств. Но от теории до практики будет лежать ООЧЧЕЕНЬ большая пропасть. Кстати, FindControl действует только в пределах своего приложения, достаточно посмотреть, как она ищет...


 
Suntechnic   (2003-04-03 19:28) [7]

>Игорь Шевченко ©
Кстати, FindControl действует только в пределах своего приложения, достаточно посмотреть, как она ищет

Поэтому я и говорил что без внедрения не обойтись. Сам я такой "дурью" :) не занимался(эксперементировать тоже облом), но как вариант "пробовать" вполне может подойти автору вопроса.


 
Morfein   (2003-04-03 20:23) [8]

>> Suntechnic
Вот ты пристал с этим внедрением! Зачем? Внедрение - это исполнения удалённого кода, кода, исполняемого вне контекста, изначально его содержащего. Причём тут поиск объекта в памяти?

Объект можно найти, например, по одинаковому для всех объектов коду... или по тексту, записанному в определённом свойстве, а потом высчитать опытным путём смещение...


 
Suntechnic   (2003-04-03 20:38) [9]

>Morfein ©
Ты вопрос вообще читал?

Как вытащить содержимое ячейки StringGrid"а ЧУЖОЙ программы?

Вот мне интересно стало как ты будешь "лазить" по адресному пространству ЧУЖОГО процесса без внедрения, да ещё и доставать оттуда данные и передавать в своё приложение? Расскажи, если не трудно...


 
Morfein   (2003-04-03 21:05) [10]

Хех... пожалста :))
Для чтения и изменения памяти чужого процесса существуют функции ReadProcessMemory и WriteProcessMemory соответственно... назначение понятно из названий, а использование - см. хелп.


 
Suntechnic   (2003-04-03 21:16) [11]

>Morfein ©
Ага понятно. Значит ты считаешь что вот этих двух ф-ций достаточно, чтобы решить подобную задачу? Позвольте тогда ещё один вопрос: а где ты возьмёшь то, что передаётся вторым параметром в эти обе ф-ции? А именно те самые адреса по которым надо писАть/читать...


 
Morfein   (2003-04-03 21:38) [12]

Так ведь здесь речь идёт о чём? О поиске объекта! Я и предлагаю человеку по какой-нить уникальной последновательности символов или по неизменной части кода StringGrid"a просканить память удалённого процесса (путём последовательного чтения памяти с помощью Read/WriteProcessMemory) и найти этот объект... а потом, в зависимости от того, по какому признаку он искал, высчитать offset до начала TStringGrid.FData и полей размерности массива и там уже работать как с обычным массивом, только использовать Read/WriteProcessMemory... Понятно объясняю? :)


 
Suntechnic   (2003-04-03 21:52) [13]

>Morfein ©
Понятно объясняю? :)
Да не очень :) Особенно что касается "...по какой-нить уникальной последновательности символов или по неизменной части кода StringGrid"a..."

...а я предлагаю человеку другой путь (описание выше). И используя этот путь необходимо производить внедрение в адресное пространство другого процесса... так что у каждого своя правда... и кстати конечная цель это не объект найти, а данные из него выташить... вообщем этог уже перерастает во флейм, так что предлагаю закончить.


 
Morfein   (2003-04-03 21:59) [14]

ок


 
Nimbus   (2003-04-04 16:10) [15]

СПАСИБО вам: Suntechnic и Morfein !
Я попробую обязательно вариант с
> FindControl
(и скорее всего, приведу здесь пример кода).
Но, если у кого-то есть ещё идеи - БУДУ РАД "выслушать" их все!!! :-))



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
6-3034
StarGer
2003-04-03 09:08
2003.06.02
Почта. Indy + Koi-8 = =?koi8-r?Q?=D001020301=2Ezip?=


1-2919
alexus
2003-05-23 00:51
2003.06.02
Ресурсы файла


1-2859
BUTEK
2003-05-20 06:16
2003.06.02
дату и время создания, изменения, открытия файла


1-2971
andrey_pst
2003-05-21 12:31
2003.06.02
TForm в отдельном потоке и TActionManager


7-3188
alexts
2003-04-01 11:47
2003.06.02
Набор номера через модем





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский