Win32 API. Hooks (хуки)
Страница 33. Сообщение WM_CANCELJOURNAL


Сообщение WM_CANCELJOURNAL

Сообщение WM_CANCELJOURNAL посылается прикладной программе, когда пользователь отменяет ведущийся протокол действий прикладной программы. Сообщение посылается с дескриптором окна имеющим значение ПУСТО (NULL).

Синтаксис

WM_CANCELJOURNAL
wParam = 0; //не используется, должно быть, нуль
lParam = 0; // не используется, должно быть, нуль

Параметры
У этого сообщения нет параметров.

Возвращаемые значения
Это сообщение не возвращает значение. Оно, как предполагается, будет обрабатываться внутри главного цикла сообщений прикладной программы или подключаемой процедуры GetMessage, а не оконной процедуры.

Замечания
Режимы записи и воспроизведения протокола - режимы, возложенные на систему, которые позволяют прикладной программе последовательно записывать или воспроизводить ввод пользователя. Система вводит эти режимы тогда, когда прикладная программа устанавливает подключаемую процедуру JournalRecordProc или JournalPlaybackProc. Когда система находится в любом из этих режимов, ведущих протокол, прикладные программы должны делать по очереди чтение вводимых данных из входной очереди. Если какая-либо прикладная программа останавливает чтение вводимой информации, пока система находится в режиме ведения протокола, другие прикладные программы вынуждены ждать.
Чтобы гарантировать устойчивость системы, для любой прикладной программой, которой нельзя зависать, Windows NT автоматически отменяет любые ведущие протокол действия, когда пользователь нажимает CTRL+ESC или CTRL+ALT+DEL.
Система тогда отключает любые фильтр - процедуры ведущие протокол, и посылает сообщение WM_CANCELJOURNAL со значением дескриптора окна ПУСТО (NULL) в прикладную программу, которая установила ведущую протокол hook-точку.
Так как сообщение WM_CANCELJOURNAL имеет дескриптор окна ПУСТО (NULL), оно не может быть послано оконной процедуре. Имеются два способа для прикладной программы, чтобы увидеть сообщение WM_CANCELJOURNAL: Если прикладная программа запускает свой собственный главный цикл сообщений, она должна перехватить сообщение между своим вызовом GetMessage или PeekMessage и своим вызовом DispatchMessage. Если прикладная программа не запускает свой собственный главный цикл сообщений, она должна установить подключаемую процедуру GetMsgProc (через вызов SetWindowsHookEx, определяя тип hook-точки как WH_GetMessage), которая отслеживает это сообщение.
Когда прикладная программа видит сообщение WM_CANCELJOURNAL, она может предположить два обстоятельства: пользователь преднамеренно отменил режим записи или воспроизведения протокола и система уже отключила любую подключаемую процедуру записи или воспроизведения протокола.
Обратите внимание!, что комбинация клавиш, упоминаемая выше (CTRL+ESC или CTRL+ALT+DEL), заставляет систему отменить ведение протокола. Если какая либо из прикладных программ зависает, они дают пользователю средства возвращения управляемости. Виртуальный код клавиши VK_CANCEL (обычно реализованный как комбинация клавиш CTRL+BREAK) - это то, что прикладная программа, которая находится в режиме записи протокола, должна ожидать как сигнал, что пользователь желает отменить ведущее протокол действие. Разницей является то, что наблюдение за VK_CANCEL является предложенным поведением для ведущих протокол прикладных программ, принимая во внимание, что CTRL+ESC или CTRL+ALT+DEL заставляют систему отменить ведение протокола независимо от поведения прикладной программы, ведущей протокол.

Смотри также
DispatchMessage, GetMessage, JournalPlaybackProc, JournalRecordProc, GetMsgProc, PeekMessage, SetWindowsHookEx

Размещение и совместимость WM_CANCELJOURNAL

Windows NTДа 
Win95Да
Win32sНет
Импортируемая библиотека-
Заголовочный файлwinuser.h
UnicodeНет
Замечания по платформеНе имеется

 

 
« Предыдущая статья   Следующая статья »