![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
задача такая:
есть в чужой программе, скажем, StringGrid (или TListBox, хотя речь не о нем, но проблемы те же). Я хочу, условно, прочесть значение из ячейки [1, 2] и вписать новое значение в ячейку [5, 6]... какой-нибудь GetWindowText (аналогичная проблема при отправке сообщения WM_SETTEXT) с TStringGrid (и TListBox) не прокатет... там все же много ячеек, и как из мемо или эдита значения достать одной строкой не удасться... из глупых мыслей, которые приходят на ум - есть мысль создать объект с нужным мне хэндлом, типа:
что вы можете посоветовать? |
|||
|
||||
| CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
ладно, давайте разноображу тему...
вот я слил прогу http://rar.ifolder.ru/4976520 можно ее поковырять... к стати, я заметил, что у дельфовых лейблов не распознается хендл то есть, дельфовый лейбл, если я правильно понимаю, тупо отрисовывается на форме но это не важно... в отношении стринг-грида у меня за целый день ничего не получилось... так что жду ваших советов |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
CompWorm,
Я чейки StringGrid-а рисуются просто на канве контейнера. Без препарации rtti процесса эту инфу врятли можно достать. Правда можно еще попробовать через перехват DrawText/DrawTextEx. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
эээмм.... рисуются ? но в памяти массив этих значений должен быть...
я полагал что фнкция GetWindowText, к примеру, берет значения напрямую из оперативы, а хэндл ей нужен чтоб нати эти данные ибо они как-то привязаны к хэндлу своего объекта... это так вообще? к сожалению, я так и не понял, какой принцип работы GetWindowText в следствии своей нубизны... Rennigth, у тебя есть мысли на счет алгоритма использования DrawText? |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
Да, эти данные вроде храняться в обычных TStringList-ах. GetWindowText работает с объектом системы "окно", а ячейки StringGrid-а это не окна.
Примеры перехватов API-функций поиском можно найти очень много. Хуки, сплайсинг и т.д. А вообще задача не тривиальная, вопросы подобие твоего часто всплывают, но готового решения я вроде не видел, одна теория. Думаю это потому что универсального средства тут не придумаешь, и задачу надо решать в каждом отдельном случае поразному. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| CompWorm |
|
||||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
ну... хотелось бы... очень... вот по поводу перехвата DrawText... я когда спрашивал, немного не точно выразился. дело в том что я пробовал перехватывать события и брать на себя их обработку... перехватив DrawText, получить какие-либо параметры я не умею. вот что мне было не ясно.
интересно, как они индексируются в сетке стринг-грида ладно, давайте подождем сообщений от остальных. может кто что дельное изобретет... Это сообщение отредактировал(а) CompWorm - 17.1.2008, 17:18 |
||||
|
|||||
| CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
ну что молчим то, народ! неужели никто ниогда не пытался из табличек вытаскивать данные ?
|
|||
|
||||
| RinOSpro |
|
|||
|
Unregistered |
CompWorm - меня тоже интересует. Я создавал тему но эффект нулевой. Кстати если открыть прогу а редакторе памяти к примеру WinHEX то там можно найти все данные которые отображаются на экране. Отсюда следует то зачем граббить с экрана если можно из памяти тока как найти адрес по которому находится начало данных. Если к примеру нашли то потом уже парсить, что на много проще
Вот и вопрос как найти адрес начала этих данных (которые в TStringGrid, TListBox и т.д.)? |
|||
|
||||
| CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
RinOSpro, к сожалению я потерял топик, где сноуви, кажется, написал как снять дамп памяти... на недели все же постараюсь найти этот пост и попробую выкачать табличку непосредственно из памяти.
если что-нибудь получится |
|||
|
||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
Выдрать данные из TListBox:
Параметр - дескриптор ListBox'а. Это сообщение отредактировал(а) Rrader - 7.9.2008, 13:24 |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |