Здравствуйте, Elf, Вы писали:
Elf>Может, глупый вопрос, но что есть CALLBACK функция?
По-русски это "функция обратного вызова".
Это
ваша функция, которую система может вызвать, чтобы, например, сообщить Вам о некотором событии. Типичный пример — оконная функция — она получает уведомления о событиях, относящихся к данному окну.
Elf>И как пользоваться SetWindowsHookEx и EnumWindows?
Лучше напишу про EnumWindows, так короче будет
#include <windows.h>
#include <stdio.h>
/* Вот наша функция обратного вызова */
BOOL CALLBACK MyEnumProc ( HWND hwnd, LPARAM lParam )
{
char title[1024]; /* Для большинства окон должно хватить */
GetWindowText ( hwnd, title, sizeof (title) );
printf ( "%d: %s\n", hwnd, title );
return TRUE; /* Продолжить перечисление */
}
void main ( void )
{
EnumWindows ( (WNDENUMPROC)MyEnumProc, (LPARAM)NULL );
}
Результатом запуска программы будет список окон верхнего уровня.
Главные требования для подобных функций:
1) Наличие модификатора CALLBACK;
2) Совпадение количества и типов параметров и возвращаемого значения.
Обратите внимание, что экспортировать функцию не обязательно, Windows все равно сможет вызвать функцию, даже если Вы объявите ее static.