.


:




:

































 

 

 

 





, , <Ctrl+C> . .

SetConsoleCtrlHandler Ctrl-c, Ctrl-break , . GenerateConsoleCtrlEvent, 6, , , , , . , DWORD, .

, . , , :

BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine, BOOL Add)

Add, TRUE, , . , . , , .

DWORD, . (HandlerRoutine) , .

, .

HandlerRoutine NULL, Add TRUE, Ctrl-c .

SetConsoleMode ENABLE_PROCESSED_INPUT ( 2), <Ctrl+C> , .

(. 7) . , , .

, , , . , , , ( 8).

. , , , .

BOOL HandlerRoutine(DWORD dwCtrlType)

dwCtrlType ( ) :

1. CTRL_C_EVENT , <Ctrl+C> .

2. CTRL_CLOSE_EVENT .

3. CTRL_BREAK_EVENT Ctrl-break.

4. CTRL_LOGOFF_EVENT .

5. CTRL_SHUTDOWN_EVENT .

" " , . TRUE. FALSE, , . , , , .

:

4.5 , 5 , . , <Ctrl+C> . , 10 , , , TRUE. Exit . ; , . , .

WINAPI; , Windows, . Microsoft WTYPES..

4.5. Ctrlc:

/* 4. Ctrlc. */

/* . */

#include "EvryThng.h"

 

static BOOL WINAPI Handler(DWORD CtrlEvent); /* . WTYPES.H. */

volatile static BOOL Exit = FALSE;

 

int _tmain(int argc, LPTSTR argv[])

/* . */

{

/* . */

if (!SetConsoleCtrlHandler(Handler, TRUE)) ReportError(_T(" ."), 1, TRUE);

while (!Exit) {

Sleep (5000); /* 5 . */

(1000 /* . */, 250 /* . */);

}

_tprintf(_T(" .\n"));

return 0;

}

 

BOOL WINAPI Handler (DWORD CtrlEvent) {

Exit = TRUE;

switch (CntrlEvent) {

/* , . */

case CTRL_C_EVENT:

_tprintf(_T(" Ctrl-c. 10 .\n"));

Sleep(4000); /* , . */

_tprintf(_T(" 6 .\n"));

Sleep(6000); /* . */

return TRUE; /* TRUE . */

case CTRL_CLOSE_EVENT:

_tprintf(_T(" 10 .\n"));

Sleep(4000);

_tprintf(_ (" 6 .\n"));

Sleep (6000); /* . */

return TRUE; /* FALSE. ? */

default:

_tprintf(_T(": %d. 10 .\n"), CntrlEvent);

Sleep(4000);

_tprintf(_T(" 6 .\n"));

Sleep(6000);

return TRUE;

}

}





:


: 2015-09-20; !; : 436 |


:

:

: , .
==> ...

1474 - | 1444 -


© 2015-2024 lektsii.org - -

: 0.018 .