CallNextHookEx, SetWindowsHookEx



 

 

UnhookWindowsHookEx

 

 

Функция UnhookWindowsHookEx удаляет процедуру хука, установленную в цепочку хуков функцией SetWindowsHookEx .

 

BOOL UnhookWindowsHookEx (

 

HHOOK  hhk // дескриптор удаляемой процедуры хука

);

 

Параметры

 

hhk ‑ идентифицирует хук, подлежащий удалению. Значение этого параметра является дескриптором хука, полученным предыдущим вызовом SetWindowsHookEx .

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль.

 

Комментарии

 

Процедура хука может быть в состоянии вызова другим потоком даже после завершения функции UnhookWindowsHookEx . Если процедура хука не вызывается одновременно другим потоком, то она удаляется непосредственно перед завершением функции UnhookWindowsHookEx .

 

См. также

 

SetWindowsHookEx, UnhookWindowsHook .

 

Память

 

HeapSize

 

 

Функция HeapSize возвращает размер блока памяти, выделенного из кучи функциями HeapAlloc или HeapReAlloc , в байтах.

 

DWORD HeapSize (

 

HANDLE  hHeap , // дескориптор кучи

DWORD  dwFlags , // контрольные флаги размера кучи

LPCVOID  lpMem // указатель на память, чей размер возвращается

);

 

Параметры

 

hHeap ‑ определяет кучу, в которой находится блок памяти. Этот дескриптор возвращается функциями HeapCreate или GetProcessHeap .

dwFlags ‑ определяет некоторые контролируемые аспекты доступа к блоку памяти. В настоящее время определен только один флаг; тем не менее, все остальные значения флагов зарезервированы для будущего использования. Указание этого флага переопределит соответствующее значение флага, указанного в качестве значения параметра flOptions при создании кучи функцией HeapCreate .

 

 

 Значение   Пояснение  
HEAP _ NO _ SERIALIZE   Определяет, что взаимное исключение не будет использоваться, когда функция получает доступ к куче. Для дополнительной информации смотрите раздел "Комментарии" в описании функции HeapCreate .  

 

lpMem ‑ указывает на блок памяти, чей размер функция получает. Указатель возвращается функциями HeapAlloc или HeapReAlloc .

 

Возвращаемые значения

 

В случае успеха возвращается размер выделенного блока памяти в байтах.

В случае неудачи возвращается 0 xFFFFFFFF . Функция не вызывает SetLastError . Приложение не может вызвать GetLastError для дополнительной информации об ошибке.

 

См. также

 

GetProcessHeap, HeapAlloc, HeapCreate, HeapDestroy, HeapFree, HeapReAlloc, SetLastError .

 

Подбор цветов

 

CreateColorSpace

 

 

Функция CreateColorSpace создает логическое цветовое пространство.

 

HCOLORSPACE CreateColorSpace (

 

LPLOGCOLORSPACE  lpLogColorSpace

);

 

Параметры

 

lpLogColorSpace ‑ указывает на структуру типа LOGCOLORSPACE .

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор, который идентифицирует логическое цветовое пространство.

В случае неудачи возвращается NULL

 

Комментарии

 

Когда у вас больше нет необходимости в цветовом пространстве, вызовите функцию DeleteObject для его удаления.

 

См. также

 

DeleteObject, LOGCOLORSPACE .

 

Мультимедиа таймеры

 

TimeProc

 

 

Функция TimeProc является функцией обратного вызова, которая вызывается один раз по завершению одиночного события таймера или периодически по завершению периодических событий.

 

void CALLBACK TimeProc (

UINT uID,

UINT uMsg,

DWORD dwUser,

DWORD dw1,

DWORD dw2

);

 

TimeProc является "заполнителем" для имени определяемой приложением функции.

 

Параметры

 

uID ‑ идентификатор события таймера. Этот идентификатор был возвращен функцией timeSetEvent при установке события.

uMsg ‑ зарезервирован. Не используется.

dwUser ‑ пользовательские данные, представленные значением параметра dwUser функции timeSetEvent .

dw1 ‑ зарезервирован. Не используется.

dw2 ‑ зарезервирован. Не используется.

 

Возвращаемые значения

 

Функция не возвращает значения.

 

Комментарии

 

Приложения не должны вызывать определяемые системой функции внутри функции обратного вызова, кроме PostMessage , timeGetSystemTime , timeGetTime , timeSetEvent , timeKillEvent , midiOutShortMsg , midiOutLongMsg и OutputDebugString .

 

Требования

 

Windows NT /2000/ XP : Включена в Windows NT 3.1 и выше.

Windows 95/98/ Me : Включена в Windows 95 и выше.

Заголовок: Объявлена в Mmsystem.h; подключать Windows.h.

 

См . также

 

timeSetEvent , PostMessage , timeGetSystemTime , timeGetTime , timeKillEvent , midiOutShortMsg , midiOutLongMsg , OutputDebugString .

 

 

TimeBeginPeriod

 

 

Функция timeBeginPeriod устанавливает минимальное разрешение мультимедиа таймера для приложения или драйвера устройства.

 

MMRESULT timeBeginPeriod (

UINT  uPeriod

);

 

Параметры

 

uPeriod ‑ минимальное разрешение таймера в миллисекундах для приложения или драйвера устройства.

 

Возвращаемые значения

 

В случае успеха возвращается TIMERR_NOERROR или TIMERR_NOCANDO, если разрешение, заданное значением параметра uPeriod , находится вне допустимого диапазона.

 

Комментарии

 

Вызовите эту функцию непосредственно перед использованием сервисов мультимедиа таймера, и вызовите функцию timeEndPeriod после завершения использования сервисов мультимедиа таймера.

Вы должны каждому вызову timeBeginPeriod сопоставить вызов timeEndPeriod , определив одинаковое минимальное разрешение в обоих вызовах. Приложение может вызывать функцию timeBeginPeriod многократно, до тех пор, пока каждому ее вызову сопоставлен ответный вызов timeEndPeriod .

 

Требования

 

Windows NT /2000/ XP : Включена в Windows NT 3.1 и выше.

Windows 95/98/ Me : Включена в Windows 95 и выше.

Заголовок: Объявлена в Mmsystem.h ; подключать Windows.h.

Библиотека: Используйте Winmm.lib.

 

См. также

 

timeEndPeriod .

 

 

TimeEndPeriod

 

 

Функция timeEndPeriod сбрасывает ранее установленное минимальное разрешение мультимедиа таймера.

 

MMRESULT timeEndPeriod(

UINT  uPeriod

);

 

Параметры

 

uPeriod ‑ минимальное разрешение таймера в миллисекундах, указанное в предыдущем вызове функции timeBeginPeriod .

 

Возвращаемые значения

 

В случае успеха возвращается TIMERR _ NOERROR или TIMERR _ NOCANDO, если разрешение, заданное значением параметра uPeriod , находится вне допустимого диапазона.

 

Комментарии

 

Вызовите эту функцию непосредственно после завершения использования сервисов мультимедиа таймера.

Вы должны каждому вызову timeBeginPeriod сопоставить вызов timeEndPeriod , определив одинаковое минимальное разрешение в обоих вызовах. Приложение может вызывать функцию timeBeginPeriod многократно, до тех пор, пока каждому ее вызову сопоставлен ответный вызов timeEndPeriod .

 

Требования

 

Windows NT /2000/ XP : Включена в Windows NT 3.1 и выше.

Windows 95/98/ Me : Включена в Windows 95 и выше.

Заголовок: Объявлена в Mmsystem . h ; подключать Windows . h .

Библиотека: Используйте Winmm . lib .

 

См . также

 

timeBeginPeriod .

 

TimeGetDevCaps

 

 

Функция timeGetDevCaps запрашивает мультимедиа таймер для определения его разрешения.

 

MMRESULT timeGetDevCaps (

LPTIMECAPS  ptc ,

UINT  cbtc

);

 

Параметры

 

ptc ‑ указатель на структуру типа TIMECAPS . Эта структура заполняется информацией о разрешении мультимедиа таймера.

cbtc ‑ размер структуры типа TIMECAPS в байтах.

 

Возвращаемые значения

 

Возвращается TIMERR_NOERROR в случае успеха или TIMERR_STRUCT, если функция не может вернуть возможности устройства.

 

Требования

 

Windows NT /2000/ XP : Включена в Windows NT 3.1 и выше.

Windows 95/98/ Me : Включена в Windows 95 и выше.

Заголовок: Объявлена в Mmsystem.h ; подключать Windows.h .

Библиотека: Используйте Winmm. lib.

 

См . также

 

TIMECAPS .

 

 

TimeGetSystemTime

 

 

Функция timeGetSystemTime извлекает системное время в миллисекундах. Системное время ‑ это время, истекшее с момента старта Windows . Эта функция работает схожим с функцией timeGetTime образом. Смотри описание timeGetTime для подробного описания работы с данными функциями.

 

MMRESULT timeGetSystemTime (

LPMMTIME  pmmt ,

UINT  cbmmt

);

 

Параметры

 

pmmt ‑ указатель на структуру типа MMTIME .

cbmmt ‑ размер структуры типа MMTIME в байтах.

 

Возвращаемые значения

 

Возвращает TIMERR _ NOERROR . Системное время возвращается в качестве значения члена ms структуры типа MMTIME .

 

Требования

 

Windows NT /2000/ XP : Включена в Windows NT 3.1 и выше.

Windows 95/98/ Me : Включена в Windows 95 и выше.

Заголовок: Объявлена в Mmsystem . h ; подключать Windows . h .

Библиотека: Используйте Winmm . lib .

 

См . также

 

timeGetTime, MMTIME .

 

 

TimeGetTime

 

 

Функция timeGetTime извлекает системное время в миллисекундах. Системное время ‑ это время, истекшее с момента старта Windows .

 

DWORD timeGetTime (VOID );

 

Параметры

 

Функция не имеет параметров.

 

Возвращаемые значения

 

Функция возвращает системное время в миллисекундах.

 

Комментарии

 

Единственной разницей между этой функцией и функцией timeGetSystemTime является использование timeGetSystemTime структуры типа MMTIME для возвращения системного времени. У функции timeGetTime меньшие по сравнению с timeGetSystemTime накладные расходы.

Обратите внимание, что значение, возвращаемое функцией timeGetTime , имеет тип DWORD . Возвращаемое значение сбрасывается в нуль каждые 2^32 миллисекунд, что составляет примерно 49.71 дней. Это может вызвать проблемы в коде, который напрямую использует возвращаемое функцией timeGetTime значение в вычислениях, особенно, когда значение используется для контроля выполнения кода. Вы должны всегда в вычислениях использовать разницу между двумя возвращаемыми функцией timeGetTime значениями.

Windows NT /2000: Точность по умолчанию для функции timeGetTime может быть пять или более миллисекунд, в зависимости от машины. Вы можете использовать функции timeBeginPeriod и timeEndPeriod для увеличения точности timeGetTime . Если вы это сделаете, минимальная разница между двумя успешно возвращенными функцией timeGetTime значениями может быть меньше минимального периода, установленного функциями timeBeginPeriod и timeEndPeriod . Для измерения коротких интервалов времени с высокой точностью используйте функции QueryPerformanceCounter и QueryPerformanceFrequency .

Windows 95: Точность по умолчанию для функции timeGetTime составляет одну миллисекунду. Другими словами, функция timeGetTime может возвращать значения, отличающиеся друг от друга только на одну миллисекунду. И не имеет значения, были ли вызваны функции timeBeginPeriod и timeEndPeriod .

 

Требования

 

Windows NT /2000/ XP : Включена в Windows NT 3.1 и выше.

Windows 95/98/ Me : Включена в Windows 95 и выше.

Заголовок: Объявлена в Mmsystem.h ; подключать Windows.h .

Библиотека: Используйте Winmm.lib .

 

См . также

 

timeGetSystemTime , MMTIME, timeBeginPeriod , timeEndPeriod , QueryPerformanceCounter , QueryPerformanceFrequency .

 

 

TimeKillEvent

 

 

Функция timeKillEvent отменяет указанное событие таймера

 

MMRESULT timeKillEvent (

UINT  uTimerID

);

 

Параметры

 

uTimerID ‑ идентификатор отменяемого события таймера. Этот идентификатор был возвращен функцией timeSetEvent , когда устанавливалось событие таймера.

 

Возвращаемые значения

 

Возвращается TIMERR_NOERROR в случае успеха или MMSYSERR_INVALPARAM, если указанное событие таймера не существует.

 

Требования

 

Windows NT /2000/ XP : Включена в Windows NT 3.1 и выше.

Windows 95/98/ Me : Включена в Windows 95 и выше.

Заголовок: Объявлена в Mmsystem.h ; подключать Windows.h.

Библиотека: Используйте Winmm.lib.

 

См . также

 

timeSetEvent .

 

 

TimeSetEvent

 

 

Функция timeSetEvent запускает указанное событие мультимедиа таймера. Мультимедиа таймер выполняется в своем собственном потоке. После активации события, оно вызывает указанную функцию обратного вызова или устанавливает, или вызывает срабатывание указанного события.

 

MMRESULT timeSetEvent (

UINT  uDelay ,

UINT  uResolution ,

LPTIMECALLBACK  lpTimeProc ,

DWORD_PTR  dwUser ,

UINT  fuEvent

);

 

Параметры

 

uDelay ‑ задержка события в миллисекундах. Если это значение лежит вне диапазона допустимых значений задержки, поддерживаемых таймером, функция возвращает ошибку.

uResolution ‑ разрешение событий таймера в миллисекундах. Разрешение увеличивается при уменьшении значений; разрешение, установленное в нуль, показывает, что периодические события будут происходить с наибольшей возможной точностью. Для уменьшения системных издержек, тем не менее, вы должны использовать максимальное значение, соответствующее вашему приложению.

lpTimeProc ‑ указатель на функцию обратного вызова, которая вызывается по истечению одиночного события или периодически по истечению периодических событий. Если fuEvent определяет флаг TIME_CALLBACK_EVENT_SET или TIME_CALLBACK_EVENT_PULSE, то значение параметра lpTimeProc интерпретируется как дескриптор события. Для любых других значений fuEvent , значение lpTimeProc интерпретируется как указатель на функцию со следующей сигнатурой:

 

void ( CALLBACK )( UINT  uTimerID , UINT  uMsg , DWORD_PTR  dwUser , DWORD_PTR  dw1 , DWORD_PTR  dw2 ).

 

dwUser ‑ определяемые пользователем данные.

fuEvent ‑ тип события таймера. Может принимать одно из следующих значений:

 

 

 Значение   Пояснение  
TIME_ONESHOT   Событие происходит один раз, после uDelay миллисекунд.  
TIME_PERIODIC   Событие происходит каждые uDelay миллисекунд.  

 

Параметр fuEvent также может принимать одно из следующих значений:

 

 

 Значение   Пояснение  
TIME_CALLBACK_FUNCTION   По истечении времени Windows вызывает функцию, определяемую значением параметра lpTimeProc . Поведение по умолчанию.  
TIME_CALLBACK_EVENT_SET   По истечении времени Windows вызывает функцию SetEvent для установки события, определяемого значением параметра lpTimeProc . Параметр dwUser игнорируется.  
TIME_CALLBACK_EVENT_PULSE   По истечении времени Windows вызывает функцию PulseEvent для срабатывания события, определяемого значением параметра lpTimeProc . Параметр dwUser игнорируется.  
TIME_KILL_SYNCHRONOUS   Передача этого флага предотвращает происхождение события после вызова функции timeKillEvent .  

 

Возвращаемые значения

 

Возвращается идентификатор события таймера в случае успеха, или ошибка в противном случае. Функция возвращает NULL, если ее вызов завершился неудачей, и событие таймера не было создано. (Идентификатор события также передается в функцию обратного вызова).

 

Комментарии

 

Каждый вызов timeSetEvent для периодических событий таймера требует соответствующего вызова функции timeKillEvent . Создание события с флагами TIME_KILL_SYNCHRONOUS и TIME_CALLBACK_FUNCTION предотвращает происхождение события после вызова функции timeKillEvent .

 

Требования

 

Windows NT /2000/ XP : Включена в Windows NT 3.1 и выше.

Windows 95/98/ Me : Включена в Windows 95 и выше.

Заголовок: Объявлена в Mmsystem.h; подключать Windows.h.

Библиотека: Используйте Winmm.lib.

 

См. также

 

PulseEvent , SetEvent , timeKillEvent .

 

Выключение системы

 

LockWorkStation

 

 

Функция LockWorkStation отправляет запрос на блокировку дисплея рабочей станции. Блокирование рабочей станции защищает ее от несанкционированного использования.

 

BOOL LockWorkStation ( VOID );

 

Параметры

 

Функция не имеет параметров.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение. Поскольку функция выполняется асинхронно, ненулевое возвращаемое значение указывает, что операция была инициирована. Оно не указывает, была ли рабочая станция успешно заблокирована.

В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

Комментарии

 

Общими причинами, по которым рабочая станция не может быть заблокирована, даже если вызов функции завершился успешно, могут быть: отсутствие вошедшего в систему пользователя, существующая блокировка рабочей станции, запущенность процесса не на интерактивном рабочем столе, отклонение запроса библиотекой графической идентификации и аутентификации (GINA DLL).

Вызов функции приводит к такому же результату, что и нажатие клавиш Ctrl + Alt + Del и щелчок по кнопке " Lock Workstation " ("Блокировка"). Для разблокирования рабочей станции пользователь должен войти в систему.

 

Требования

 

Windows NT /2000/ XP : Включена в Windows 2000 и выше.

Windows 95/98/Me: Не поддерживается .

Заголовок: Объявлена в Winuser.h; подключать Windows.h.

Библиотека: Используйте User32.lib.

 

 


Дата добавления: 2021-01-21; просмотров: 66; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!