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



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


В качестве примера приведем исходные тексты простейшей DLL-библиотеки DLLDemo.DLL, в которой определены всего две функции. Первая из них - это функция инициализации DLLEntryPoint, а вторая - функция FindApplicationWindow.

Функция инициализации DLLEntryPoint в нашем случае не выполняет никакой работы, однако когда она получает управление, на экране появляется одно из четырех сообщений (в зависимости от значения кода причины вызова). Таким образом, вы сможете проследить ход инициализации DLL-библиотеки при ее отображении в адресное пространство процессов, а также при отключении DLL-библиотеки от процессов.

В задачу функции FindApplicationWindow входит поиск главного окна приложения по заголовку этого окна. В случае успеха функция FindApplicationWindow возвращает идентификатор первого найденного окна с подходящим заголовком, а при неудаче - значение NULL. Вы можете использовать эту функцию для проверки, запущено ли указанное вами приложение, или нет.

Исходный текст DLL-библиотеки представлен в листинге 3.1.

Листинг 3.1. Файл dlldemo\dlldemo.c

// ==================================================

// DLL-библиотека DLLDemo.DLL

// Поиск окна по заданному заголовку

//

// (С) Фролов А.В., 1996

// Email: frolov@glas.apc.org

// ==================================================

#include <windows.h>

#include <windowsx.h>

#include "dlldemo.h"

// Глобальная переменная, в которую записывается

// идентификатор найденного окна или значение NULL,

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

HWND hwndFound;

// -------------------------------------------------

// Функция DLLEntryPoint

// Точка входа DLL-библиотеки

// -------------------------------------------------

BOOL WINAPI DLLEntryPoint(

  HMODULE hModule,    // идентификатор модуля

  DWORD   fdwReason,  // причина вызова функции DLLEntryPoint

  LPVOID  lpvReserved) // зарезервировано

{

  switch(fdwReason)

  {

    // Подключение нового процесса

    case DLL_PROCESS_ATTACH:




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