( ) , INPUT_RECORD . . len. buffer , len 1. , len, 1, ReadConsoleInputA , ( actlen). . , . , , ().
#include <windows.h>
#include <stdio.h>
void main()
{char prompt[]="Input any character:";
char text[]="\nInputing";
INPUT_RECORD charinfo;
DWORD actlen;
HANDLE hstdout,hstdin;
hstdout=GetStdHandle(STD_OUTPUT_HANDLE);
if(hstdout==INVALID_HANDLE_VALUE)
{printf("Error GetStdHandle\n");exit(-1);}
hstdin=GetStdHandle(STD_INPUT_HANDLE);
if(hstdin==INVALID_HANDLE_VALUE)
{printf("Error GetStdHandle\n");exit(-1);}
WriteConsoleA(hstdout,prompt,sizeof(prompt),&actlen,NULL);
do
{ReadConsoleInput(hstdin,&charinfo,1,&actlen);}
while(charinfo.EventType!=KEY_EVENT);
text[10]=charinfo.Event.KeyEvent.uChar.AsciiChar;
WriteConsoleA(hstdout,text,11,&actlen,NULL);
getchar();
CloseHandle(hstdout);
ExitProcess(0);
}
, . , . , . . SetConsoleMode
BOOL SetConsoleMode(HANDLE hConsHandle, DWORD mode);
mode . ENABLE_PROCESSED_INPUT, ENABLE_LINE_INPUT, ENABLE_ECHO_INPUT, ENABLE_WINDOW_INPUT, ENABLE_MOUSE_INPUT. ENABLE_ECHO_INPUT, , . .
|
|
BOOL GetConsoleMode(HANDLE hConsHandle, DWORD* pmode),
.
#include <windows.h>
#include <stdio.h>
void main()
{char prompt[]="Input any character:";
char text[]="\nInputing:";
INPUT_RECORD charinfo;
DWORD actlen,fdwMode,fdwSaveOldMode;
HANDLE hstdout,hstdin;
hstdout=GetStdHandle(STD_OUTPUT_HANDLE);
if(hstdout==INVALID_HANDLE_VALUE)
{printf("Error GetStdHandle\n");exit(-1);}
hstdin=GetStdHandle(STD_INPUT_HANDLE);
if(hstdin==INVALID_HANDLE_VALUE)
{printf("Error GetStdHandle\n");exit(-1);}
WriteConsoleA(hstdout,prompt,sizeof(prompt),&actlen,NULL);
if(!GetConsoleMode(hstdin,&fdwSaveOldMode))
{printf("ErrorGetConsoleMode\n");exit(-1);}
fdwMode=fdwSaveOldMode&~ENABLE_MOUSE_INPUT&~ENABLE_ECHO_INPUT;
if(!SetConsoleMode(hstdin,fdwMode))
{printf("ErrorSetConsoleMode\n");exit(-1);}
printf("Input\n");
ReadConsoleInput(hstdin,&charinfo,1,&actlen);
printf("type=%d\n",charinfo.EventType);
text[10]=charinfo.Event.KeyEvent.uChar.AsciiChar;
WriteConsoleA(hstdout,text,11,&actlen,NULL);
getchar();
if(SetConsoleMode(hstdin,fdwSaveOldMode))
{printf("\nRestored ConsoleMode");}
getchar();
CloseHandle(hstdout);
ExitProcess(0);
}
:
1. MS Windows.
2. .
5