Рефераты | Рефераты по информатике, программированию | Хуки и DLL | страница реферата 2 | Большая Энциклопедия Рефератов от А до Я
Большая Энциклопедия Рефератов от А до Я
  • Рефераты, курсовые, шпаргалки, сочинения, изложения
  • Дипломы, диссертации, решебники, рассказы, тезисы
  • Конспекты, отчеты, доклады, контрольные работы

  • Любые переменные, объявленные вами в области действия #pragma, определяющей сегмент данных, будут размещены в этом сегменте данных, при условии, что они инициализированы. Если вы не укажете инициализатор, переменные будут размещены в сегменте данных по умолчанию, и #pragma не имеет силы.

    ПРИМЕЧАНИЕ

    В тот же момент оказывается, что эта особенность не позволяет использовать массивы объектов C++ в разделяемом сегменте данных, т.к. в C++ вы не можете инициализировать массив пользовательских объектов (предполагается, что этим должны заниматься их конструкторы по умолчанию). Это пересечение формальных требований C++ и расширений Microsoft, требующих наличия инициализаторов, оказывается фундаментальным ограничением.

    Директива #pragma comment вызывает добавление указанного ключа к командной строке компоновщика на этапе связывания. Вы могли бы использовать Project | Settings в VC++ и изменить командную строку компоновщика, однако трудно помнить про необходимость такого действия, когда вы перемещаете код с места на место (и обычная ошибка - забыть выбрать All Configurations при изменении установок и, таким образом, успешно отлаживать, но получить сбой в конфигурации Release). Итак, я обнаружил, что лучше всего помещать команду непосредственно в исходном файле. Заметим, что используемый текст должен соответствовать синтаксису командного ключа компоновщика. Это означает, что вы не должны включать в указанный текст пробелы, иначе компоновщик не обработает его должным образом.

    Обычно вы предоставляете некоторый механизм для установки дескриптора окна. Например,

    void SetWindow(HWND w)

     {

     hWnd = w;

     }

    хотя эта операция, как я покажу далее, часто совмещена с собственно установкой хука.

    Пример: Мышиный Хук

    заголовочный файл (myhook.h)

    Здесь должны быть объявлены функции setMyHook и clearMyHook, но это требование разъяснено в моем очерке Рефераты | Рефераты по информатике, программированию | Хуки и DLLThe Ultimate DLL Header File.

    #define UWM_MOUSEHOOK_MSG

     _T("UMW_MOUSEHOOK-"

     "{B30856F0-D3DD-11d4-A00B-006067718D04}")

    исходный файл (myhook.cpp)

    #include "stdafx.h"

    #include "myhook.h"

    #pragma data_seg(".JOE")

    HWND hWndServer = NULL;

    #pragma data_seg()


    Рекомендуем скачать другие рефераты по теме: конспекты бесплатно, сочинение егэ.



    Предыдущая страница реферата | 1  2  3  4  5  6  7  8 |




    Поделитесь этой записью или добавьте в закладки

       




    Категории:



    Разделы сайта




    •