Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему в Win XP не работает EnumWindows [D6, Win95/98, WinXP]


amo ©   (2004-01-04 15:45:00) 

Нужно загнать в ComboBox все открытые окна делаю так:

procedure FindWind;
begin
Form1.ComboBox1.Items.Clear;
EnumWindows (@EnumProc, 0);
end;

function EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall;
Var
Nm:Array[0..255] of Char;
Begin
If IsWindowVisible(Wd) Then
Begin
GetWindowText(Wd,Nm,255);
If String(Nm)<>"" Then
Form1.ComboBox1.Items.Add(String(Nm));
EnumProc := TRUE;
End;
end;

В Win 98 работает а в XP нет, помогите плиззз


amo   (2004-01-04 17:32:00) [1]

Премного благодарен Автоответчик, исправил, заработало!


Автоответчик   (2004-01-04 17:08:00) [2]

Извини за сумбурное изложение. Я имею в виду, что нужно исправить как я указал: то есть убрать EnumProc := TRUE из If"а, и перенести его в основное тело процедуры, которое выполняется всегда


Автоответчик   (2004-01-04 17:05:00) [3]

If IsWindowVisible(Wd) Then
Begin
GetWindowText(Wd,Nm,255);
If String(Nm)<>"" Then
Form1.ComboBox1.Items.Add(String(Nm));
End;
EnumProc := TRUE;

У тебя разрешается продолжить поиск окон только в том, случае, если первое найденное окно - видимое, иначе - результат возвращаемой функции будет неопределенным (с вероятностью 1/2 - False)


Наверх

Титульная страница Поиск, карта сайта Написать письмо