Программирование для Windows NT (том 2)




Исходные тексты DLL-библиотеки DLLDEMO - часть 3


    hwndFound = hwnd;

   

    // Завершаем цикл просмотра окон

    return FALSE;

  }

 

  // Если заголовок не совпал, продолжаем поиск

  else

  {

    // Записываем в глобальную переменную hwndFound

    // значение NULL. Это признак того, что окно

    // с заданным заголовком не было найдено

    hwndFound = NULL;   

    // Для продолжения поиска возвращаем значение TRUE

    return TRUE;

  }

}

В файле dlldemo.h (листинг 3.2) находятся прототипы функций, определенных в нашей DLL-библиотеке.

Листинг 3.2. Файл dlldemo\dlldemo.h

BOOL WINAPI DLLEntryPoint(HMODULE hModule,

  DWORD fdwReason, LPVOID lpvReserved);

HWND FindApplicationWindow(LPSTR lpszWindowTitle);

BOOL CALLBACK EnumWindowsProc(

  HWND   hwnd,   // идентификатор родительского окна

  LPARAM lParam); // произвольное значение

Файл определения модуля dlldemo.def DLL-библиотеки представлен в листинге 3.3.

Листинг 3.3. Файл dlldemo\dlldemo.def

EXPORTS

  FindApplicationWindow @1

Итак, займемся исходными текстами DLL-библиотеки.

В области глобальных переменных определена переменная hwndFound. В эту переменную будет записан идентификатор найденного окна или значение NULL, если поиск окончился неудачно.

Функция DLLEntryPoint предназначена для инициализации библиотеки. В нашем случае функция инициализации просто выводит на экран различные сообщения в зависимости от кода причины вызова.

Функция FindApplicationWindow ищет главное окно приложения по заголовку этого окна, адрес которого передается ей через параметр lpszWindowTitle.

Для поиска окна мы использовали функцию EnumWindows. В качестве первого параметра этой функции передается адрес функции обратного вызова, которая будет использована для сравнения заголовков всех окон с заданным, а в качестве второго - адрес искомого заголовка:

EnumWindows(EnumWindowsProc, (LPARAM)lpszWindowTitle);

Если функция EnumWindowsProc найдет окно, она запишет его идентификатор в глобальную переменную hwndFound. Если же приложение с таким заголовком не запущено, в эту переменную будет записано значение NULL.




Содержание  Назад  Вперед