Форум: "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