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




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


    {

      MessageBox(NULL, "Process attached", "DLL Demo", MB_OK);

      break;

    }

    // Подключение новой задачи

    case DLL_THREAD_ATTACH:

    {

      MessageBox(NULL, "Thread attached", "DLL Demo", MB_OK);

      break;

    }

    // Отключение процесса

    case DLL_PROCESS_DETACH:

    {

      MessageBox(NULL, "Process detached", "DLL Demo", MB_OK);

      break;

    }

    // Отключение задачи

    case DLL_THREAD_DETACH:

    {

      MessageBox(NULL, "Thread detached", "DLL Demo", MB_OK);

      break;

    }

  }

  return TRUE;

}

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

// Функция FindApplicationWindow

// Поиск главного окна приложения по его заголовку

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

HWND FindApplicationWindow(LPSTR lpszWindowTitle)

{

  // Запускаем цикл поиска окна с заголовком,

  // адрес которого передан функции через

  // параметр lpszWindowTitle

  EnumWindows(EnumWindowsProc, (LPARAM)lpszWindowTitle);

     

  // Возвращаем значение глобальной переменной hwndFound,

  // которое устанавливается функцией обратного вызова

  // EnumWindowsProc в зависимости от результата поиска

  return hwndFound;

}

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

// Функция EnumWindowsProc

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

BOOL CALLBACK EnumWindowsProc(

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

  LPARAM lParam) // адрес строки заголовка окна

{

  // Буфер для хранения заголовка окна

  char szBuf[512];

  // Получаем заголовок окна

  GetWindowText(hwnd, szBuf, 512);

 

  // Сравниваем заголовок со строкой, адрес которой

  // передан в функцию EnumWindowsProc через параметр lParam

  if(!strcmp((LPSTR)lParam, szBuf))

  {

    // Если заголовок совпал, сохраняем идентификатор

    // текущего окна в глобальной переменной hwndFound




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