Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.09;
Скачать: CL | DM;

Вниз

Перечисление дочерних окон   Найти похожие ветки 

 
Углук ©   (2007-07-11 12:21) [0]

Здравствуйте.

Я выполняю перечисление дочерних окон на заранее известном окне чужого приложения. Нижеприведенный код присутствует в двух разных приложениях.
В первом приложений код работает правильно (функция EnumChildProc проходится столько раз, сколько есть дочерних окон, и возвращает необходимый хэндл). Во втором - функция EnumChildProc вызывается всего один раз, и как следствие, нужный хэндл не находится. Разница между двумя приложениями состоит в том, что в первом целевое окно TOuterForm уже запущено,а во втором оно запускается непосредственно перед вызовом функции EnumChildWindows.
Код вызова и там и там один и тот же
В чем может быть дело?

//Код вызова
EnumChildWindows(FindWindow("TOuterForm",nil),@EnumChildProc,0);

//Функция
Function EnumChildProc(H:hwnd; lParam:longword):boolean;stdcall;
var
 st:string; a:integer;
 t : array [0..100] of char;
 tex : pchar;
begin
 tex:=@t;
 a:=GetWindowTextLength(h);
 t[100]:=#0;
 GetWindowText(h,tex,100);
 st:=tex;
 if st="Load" then
 form1.memo1.lines.add(IntToStr(h));
end;


 
MBo ©   (2007-07-11 12:29) [1]

To continue enumeration, the callback function must return TRUE

где присвоение результата?

(кстати, возращаемый тип лучше сделать BOOL)


 
Углук ©   (2007-07-11 12:57) [2]

Виноват

var a:boolean
/...
//Код вызова
a:=EnumChildWindows(FindWindow("TOuterForm",nil),@EnumChildProc,0);


 
clickmaker ©   (2007-07-11 13:23) [3]


>  [2] Углук ©   (11.07.07 12:57)

да это тут причем?
тебе из самой EnumChildProc надо вернуть true, если хочешь дальше перечислять


 
homm ©   (2007-07-11 13:35) [4]

> Разница между двумя приложениями состоит в том, что в первом
> целевое окно TOuterForm уже запущено,а во втором оно запускается
> непосредственно перед вызовом функции

Form2.Create;
Application.ProcessMessages();


 
Углук ©   (2007-07-11 15:10) [5]

clickmaker ©   (11.07.07 13:23) [3]  Спасибо! Точно!



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

Текущий архив: 2008.03.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
10-1143627195
alk
2006-03-29 14:13
2008.03.09
Обмен параметрами между клиентом и сервером


6-1181805887
Арсений
2007-06-14 11:24
2008.03.09
Заполнить TEXTAREA используя TWebBrowser


3-1192453147
kyn66
2007-10-15 16:59
2008.03.09
Не обновляются поля БД


15-1201767728
Григорьев Антон
2008-01-31 11:22
2008.03.09
Глюк vs2005? Никто не сталкивался?


15-1201840674
Ивриил
2008-02-01 07:37
2008.03.09
Может ли бог так разогреть курицу, что не сможет ее съесть?