Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как получить список хендлов всех открытых окон?

33K
31 января 2012 года
iprog
60 / / 26.01.2010
Здравствуйте.
По сабжу я нашел API функции, но никак не получается наладить работу.

Есть функция EnumWindows, ей нужно передать адрес моей функции, которая будет обрабатывать каждый найденный хендл. Код вышел такой:
Код:
BOOL CALLBACK EWP(HWND hwnd, LPARAM lParam)
{
        AnsiString cap;
        GetWindowText(hwnd, cap.c_str(), 1000);
        Form1->ListBox1->Items->Add(cap);
        return TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
EnumWindows((int)EWP, 10);
}

Может, я чего-то не понимаю, но C++ Builder показывает ошибки на строке EnumWindows((int)EWP, 10):
[C++ Error] uMain.cpp(29): E2034 Cannot convert 'int' to 'int (__stdcall *)()'
[C++ Error] uMain.cpp(29): E2342 Type mismatch in parameter 'lpEnumFunc' (wanted 'int (__stdcall *)()', got 'int')

Подскажите, пожалуйста, что нужно исправить? Спасибо.
394
31 января 2012 года
MegaMozg
317 / / 18.03.2006
так?
 
Код:
EnumWindows(EWP, 10);
33K
06 февраля 2012 года
iprog
60 / / 26.01.2010
Цитата: MegaMozg
так?
 
Код:
EnumWindows(EWP, 10);



Я уже нашел ответ:

EnumWindows((WNDENUMPROC)EWP, 10);

но теперь не возвращаются заголовки окон функцией GetWindowText, которой я передаю каждый получаемый хендл. Я проверял, хендлы возвращаются (в функцию EWP) ненулевые.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог