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);
}
Как получить список хендлов всех открытых окон?
По сабжу я нашел API функции, но никак не получается наладить работу.
Есть функция EnumWindows, ей нужно передать адрес моей функции, которая будет обрабатывать каждый найденный хендл. Код вышел такой:
Код:
Может, я чего-то не понимаю, но 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')
Подскажите, пожалуйста, что нужно исправить? Спасибо.
Код:
EnumWindows(EWP, 10);
Цитата: MegaMozg
так?
Код:
EnumWindows(EWP, 10);
Я уже нашел ответ:
EnumWindows((WNDENUMPROC)EWP, 10);
но теперь не возвращаются заголовки окон функцией GetWindowText, которой я передаю каждый получаемый хендл. Я проверял, хендлы возвращаются (в функцию EWP) ненулевые.