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

Вниз

Как прочитать информацию с чужй формы (Заголовок формы известен)   Найти похожие ветки 

 
Tracer   (2003-11-12 12:29) [0]

На чужой форме лежит несколько контролов типа Tedit
и Tlabel как мне прочитать из них информацию в свою программу?


 
Digitman   (2003-11-12 12:47) [1]

c TEdit все просто : компонент инкапсулирует работу со стандартным виндовым классом "EDIT", достаточно по имени класса и имени окна класса найти его хэндл и запросить для найденного хэндла текст окна с пом. GetWindowText()

с TLabel все сложнее : нужно внедрять код в "чужой" процесс, ибо TLabel как потомок TGraphicControl не имеет своего окна и отрисовывается оконными процедурами формы, которой этот лейбл принадлежит. Т.е. нужно внедрить код, который, зная адрес объекта-формы в чужом ВАП, обратится к этому объекту-форме через св-во Controls[] для получения инф-ции об интересующем лейбл-объекте .


 
Tracer   (2003-11-12 13:05) [2]

Спасибо.
Можно примерчик для ТEdit?


 
Digitman   (2003-11-12 13:14) [3]

var
s: String;

SetString(s, GetWindowTextLength(hEditWnd));
GetWindowText(hEditWnd, PChar(s), Length(s));


 
Tracer   (2003-11-12 16:42) [4]

а как сделать это для всех контролов (TEdit-ов)
те. как получить список всех контролов окна?


 
Digitman   (2003-11-12 17:13) [5]

надо знать, кто их parent ... а для каждого parent"а - кто, соответственно, его parent .. и так до окна, не имеющего parent"а (точнее сказать - parent"ом окна верхнего уровня будет дисктоп)

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


 
Tracer   (2003-11-12 17:59) [6]

Оно понятно,
для начала нужно найти окно через FindWindow > вернет handle окна
Затем через FindWindowEx найти нужный эдит > вернет handle эдита
Для этого нужно знать хотя-бы имя искомого контрола.
После этого можно делать с эдитом все, что угодно с помощью
ф-ции SendMessage
например взять текст
SendMessage(EditHandle, WM_GETTEXT, 0, 0)
А как взять handle того едита имя которого я не знаю ?
и даже не точно знаю данные этого контрола? знаю только, что это TEdit?


 
Digitman   (2003-11-12 18:13) [7]


> имя которого я не знаю ?


а утилиты на что ? WinSight (Борланд) ? SpyXX (MS) ?

они дадут тебе детальную инф-цию об атрибутах искомого окна и дереве окон, по которому ты должен пробежать программно в поисках искомого окна контрола


 
Tracer   (2003-11-12 18:18) [8]

точно! блин, чужая форма то = const. и имена всех контролов останутся постоянными.
спасибо.


 
Digitman   (2003-11-12 18:26) [9]


> чужая форма то = const


ну это еще, положим, бабушка надвое сказала)

не исключена ситуация, что класс окна контрола фиксирован, а имя окна того же контрола может динамически меняться в ходе работы процесса



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

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

Наверх





Память: 0.46 MB
Время: 0.01 c
8-49645
дятел
2003-09-10 02:24
2004.01.16
audio plug-ins


1-49586
IBSN
2004-01-04 18:14
2004.01.16
TRichEdit


1-49552
A. Sonin
2004-01-05 21:50
2004.01.16
Эффективный способ предотвращения запуска второго экземпляра


14-49706
SoS
2003-12-25 15:12
2004.01.16
Народ, а есть ли декомпилятор способный вытащить 100% кода?


3-49426
VicSel
2003-12-17 20:10
2004.01.16
Упаковка таблицы dbf





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