Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разные данные из чужих (TStringGrid, TListBox), опять про чужие приложения 
:(
    Опции темы
CompWorm
  Дата 16.1.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



задача такая:
есть в чужой программе, скажем, StringGrid (или TListBox, хотя речь не о нем, но проблемы те же). Я хочу, условно, прочесть значение из ячейки [1, 2]
и вписать новое значение в ячейку [5, 6]...

какой-нибудь GetWindowText (аналогичная проблема при отправке сообщения WM_SETTEXT) с TStringGrid (и TListBox) не прокатет... там все же много ячеек, и как из мемо или эдита значения достать одной строкой не удасться...

из глупых мыслей, которые приходят на ум - есть мысль создать объект с нужным мне хэндлом, типа:
Код

var 
hWnd: THandle;
MyStringGrid: TStringGrid;
begin
...
как-то получаем хэндл чужого стринг-грида в переменную hWnd
...
MyStringGrid:=createTStringGrid(hWnd);
... и тут чудесным образом в MyStringGrid появляются значения из чужого объекта :)

 smile 



что вы можете посоветовать?


--------------------
PM MAIL   Вверх
CompWorm
Дата 16.1.2008, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



ладно, давайте разноображу тему...
вот я слил прогу 
http://rar.ifolder.ru/4976520 smile
можно ее поковырять...

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


--------------------
PM MAIL   Вверх
Rennigth
Дата 17.1.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



CompWorm, 
Я чейки StringGrid-а рисуются просто на канве контейнера. Без препарации rtti процесса эту инфу врятли можно достать. Правда можно еще попробовать через перехват DrawText/DrawTextEx.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
CompWorm
Дата 17.1.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



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

Rennigth, у тебя есть мысли на счет алгоритма использования DrawText?


--------------------
PM MAIL   Вверх
Rennigth
Дата 17.1.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



Цитата(CompWorm @  17.1.2008,  14:27 Найти цитируемый пост)
но в памяти массив этих значений должен быть...

Да, эти данные вроде храняться в обычных TStringList-ах.

Цитата(CompWorm @  17.1.2008,  14:27 Найти цитируемый пост)
я полагал что фнкция GetWindowText, к примеру, берет значения напрямую из оперативы, а хэндл ей нужен чтоб нати эти данные ибо они как-то привязаны к хэндлу своего объекта...

GetWindowText работает с объектом системы "окно", а ячейки StringGrid-а это не окна.

Цитата(CompWorm @  17.1.2008,  14:27 Найти цитируемый пост)
Rennigth, у тебя есть мысли на счет алгоритма использования DrawText? 

Примеры перехватов API-функций поиском можно найти очень много. Хуки, сплайсинг и т.д. 

А вообще задача не тривиальная, вопросы подобие твоего часто всплывают, но готового решения я вроде не видел, одна теория. Думаю это потому что универсального средства тут не придумаешь, и задачу надо решать в каждом отдельном случае поразному. smile В общем задача решаема конечно, но малой кровью тут не обойдешься smile Спроси у себя лутше, "те оно надо?"  smile 



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
CompWorm
Дата 17.1.2008, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



Цитата

Спроси у себя лутше, "те оно надо?"  smile 


ну... 
хотелось бы... 
очень...  smile 

вот по поводу перехвата DrawText... я когда спрашивал, немного не точно выразился. дело в том что я пробовал перехватывать события и брать на себя их обработку... перехватив DrawText, получить какие-либо параметры я не умею. вот что мне было не ясно.

Цитата

Да, эти данные вроде храняться в обычных TStringList-ах.

интересно, как они индексируются в сетке стринг-грида  smile 

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

Это сообщение отредактировал(а) CompWorm - 17.1.2008, 17:18


--------------------
PM MAIL   Вверх
CompWorm
  Дата 23.1.2008, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



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


--------------------
PM MAIL   Вверх
RinOSpro
Дата 23.1.2008, 23:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











CompWorm - меня тоже интересует. Я создавал тему но эффект нулевой. Кстати если открыть прогу а редакторе памяти к примеру WinHEX то там можно найти все данные которые отображаются на экране. Отсюда следует то зачем граббить с экрана если можно из памяти тока как найти адрес по которому находится начало данных. Если к примеру нашли то потом уже парсить, что на много проще smile

Вот и вопрос как найти адрес начала этих данных (которые в TStringGrid, TListBox и т.д.)?
  Вверх
CompWorm
Дата 27.1.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



RinOSpro, к сожалению я потерял топик, где сноуви, кажется, написал как снять дамп памяти... на недели все же постараюсь найти этот пост и попробую выкачать табличку непосредственно из памяти.
если что-нибудь получится  smile , то сообщу как делал. smile 


--------------------
PM MAIL   Вверх
Rrader
  Дата 7.2.2008, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 29
Всего: 191



Выдрать данные из TListBox:
Код

Function GetListBoxData(LHandle: THandle): String;
Var
  I: Integer;
  Len: Integer;
  S: String;
Begin
  Result := '';
  For I := 0 To SendMessage(LHandle, LB_GETCOUNT, 0, 0) - 1 Do
  Begin
    Len := SendMessage(LHandle, LB_GETTEXTLEN, I, 0);
    SetLength(S, Len);
    SendMessage(LHandle, LB_GETTEXT, I, Integer(@S[1]));
    If Result = '' Then
      Result := Result + S
    Else
      Result := Result + sLineBreak + S;
  End;
End;

Параметр - дескриптор ListBox'а.

Это сообщение отредактировал(а) Rrader - 7.9.2008, 13:24


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.