На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Registering a Control Handler Function



This section shows an example of the SetConsoleCtrlHandler function that is used to install a control handler.

When a CTRL+C signal is received, the control handler returns TRUE, indicating that it has handled the signal. Doing this prevents other control handlers from being called.
When a CTRL_CLOSE_EVENT signal is received, the control handler returns TRUE, causing the system to display a dialog box that gives the user the choice of terminating the process and closing the console or allowing the process to continue execution. If the user chooses not to terminate the process, the system closes the console when the process finally terminates.

When a CTRL+BREAK, CTRL_LOGOFF_EVENT, or CTRL_SHUTDOWN_EVENT signal is received, the control handler returns FALSE. Doing this causes the signal to be passed to the next control handler function. If no other control handlers have been registered or none of the registered handlers returns TRUE, the default handler will be used, resulting in the process being terminated.

BOOL CtrlHandler(DWORD fdwCtrlType) {
switch (fdwCtrlType) {

/* Handle the CTRL+C signal. */

case CTRL_C_EVENT:

Beep(1000, 1000);
return TRUE;

/* CTRL+CLOSE: confirm that the user wants to exit. */

case CTRL_CLOSE_EVENT:

return TRUE;

/* Pass other signals to the next handler. */

case CTRL_BREAK_EVENT:

case CTRL_LOGOFF_EVENT:


case CTRL_SHUTDOWN_EVENT:

default:

return FALSE;

}

}

VOID main(void) {
BOOL fSuccess;

fSuccess = SetConsoleCtrlHandler(
(PHANDLER_ROUTINE) CtrlHandler, /* handler function */
TRUE); /* add to list */
if (! fSuccess)
MyErrorExit("Could not set control handler");



Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Регистр Управляющей Функции Вручителя



Эта секция показывает пример функции SetConsoleCtrlHandler, которая использована, чтобы устанавливать управляющего вручителя.

Когда сигнал CTRL+C получен, управляющий вручитель возвращает ИСТИНУ, указывая, что он прооперировал сигнал. Делая это предохраняет других управляющих вручителей от названное.
Когда сигнал CTRL_CLOSE_EVENT получен, управляющий вручитель возвращает ИСТИНУ, вызывающую систему, чтобы отображать диалоговый ящик, который дает потребителю выбор завершения процесса и закрытия консоли или допуская процесс, чтобы продолжать выполнение. Если потребитель решает, чтобы завершать процесс, система закрывает консоль когда процесс наконец завершается.

Когда CTRL+BREAK, CTRL_LOGOFF_EVENT, или сигнал CTRL_SHUTDOWN_EVENT получен, управляющий вручитель возвращает ЛОЖЬ. Делая этими причинами сигнал, который нужно проходить в следующую управляющую функцию вручителя. Если никакие другие управляющие вручители не зарегистрированы или ни одна из ИСТИНЫ возврата зарегистрированных вручителей, встроенный вручитель будет использован, заканчиваясь процессом быть расторгнутое.

BOOL CtrlHandler(DWORD fdwCtrlType) { КЛЮЧ (fdwCtrlType) {

/* Прооперируйте signal. CTRL+C */

случай CTRL_C_EVENT:

Гудок(1000, 1000);
возвращайтесь ВЕРНО;

/* CTRL+CLOSE: подтвердите, что потребитель хочет exit. */

случай CTRL_CLOSE_EVENT:

возвращайтесь ВЕРНО;

/* Передайте другие сигналы в следующий handler. */

случай CTRL_BREAK_EVENT:

случай CTRL_LOGOFF_EVENT:


случай CTRL_SHUTDOWN_EVENT:

невыполнение:

обратная ЛОЖЬ;

}

}

НЕДЕЙСТВИТЕЛЬНАЯ основа(пустота) { BOOL fSuccess;

fSuccess = SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, /* Функция вручителя */ ИСТИНА); /* добавьтесь, чтобы указываться */ если (! fSuccess) MyErrorExit("Could Не установивший управляющего вручителя");



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz