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

Вниз

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

 
Углук ©   (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 вся ветка

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

Наверх




Память: 0.45 MB
Время: 0.041 c
15-1202094345
Slider007
2008-02-04 06:05
2008.03.09
С днем рождения ! 4 февраля 2008 понедельник


6-1179846831
samael6
2007-05-22 19:13
2008.03.09
Вынуть аттачмент из TidMessage без его "распаковки" + с хеадером


6-1181044210
WebSQLNeederr
2007-06-05 15:50
2008.03.09
Програмно кликнуть на ссылку из ТВебБровзера


6-1181650609
Сатир
2007-06-12 16:16
2008.03.09
TIdTCPServer: Восстановление коннекта


2-1202585855
Петр
2008-02-09 22:37
2008.03.09
проверка строки на символы





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