Как да изтриете клавиатурата клавишен буфер буфер

Отказ от отговорност за оттеглено съдържание на БЗ

Тази статия е написана за продукти, за които Microsoft вече не предлага поддръжка. Ето защо тази статия се предлага „както е“ и вече няма да бъде актуализирана.

Резюме

Изтриване на BIOS клавиатура клавишен буфер буфер, може да се използва MS-DOS прекъсва 21 функция 0CH. Тази функция изчиства клавиатурата клавишен буфер буфер и след това извиква четене функция, посочен в регистъра, ал. Ал регистъра може да бъде 0x01, 0x06, 0x07, 0x08 или 0x0A да посочите валиден четене функция. Ако не възнамерявате да прочетете след отчитане на буфер, можете да посочите невалиден номер в ал.


Друг метод за отчитане на BIOS буфер е да се обадите конзолата/и функция getch(), докато функцията kbhit() грешен. Този метод е показано в програмата по-долу и има предимството да се използва под OS/2, както и MS-DOS.

Допълнителна информация

Буфер от C функции за потока "стандартния вход" е различно от BIOS клавиатура клавишен буфер буфер. За изчистване на буфера за стандартния вход, използвайте функцията fflush(). Обаче този метод ще не пропуска BIOS буфера. За да бъде напълно изпразнен, трябва да както flush BIOS буфер, както е описано по-горе и изискват fflush стандартния вход.


Следните примерни програма е пример:

Примерен код

/* Compile options needed: none*/ 
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <dos.h>
void main (void)
{
time_t start, work ;
char str [50] ;
puts ("type for getchar(). Go to stdin's buffer.") ;
// user can type more than one character and an Enter.
getchar () ;
puts ("Type fast, 5 seconds. Go to BIOS buffer.") ;
// user can type anything including multiple Enters.
time (&start) ;
work = start ;
while ( (work - start) < 5 ) time (&work) ;
bdos (0xC, 0, 0) ; // clear BIOS keyboard buffer
// Alternative method:
// while (kbhit()) getch();
fflush (stdin) ; // clear stdin's buffer
puts ("Should be waiting again.") ;
gets (str) ;
puts (str) ;
}

Свойства

ИД на статията: 43993 – Последен преглед: 16.01.2017 г. – Редакция: 1

Обратна връзка