2017.09.18 kbhit(), bioskey(), system(“pause”)
#include<iostream>
#include<conio.h>
#include<stdlib.h>
using namespace std;
int main()
{
char ch;
while(ch != 27)
{
printf("kbhit()检测键盘是否有输入,有则返回非0,否则返回0。(除非按Esc键,否则你讲一直看见这句话!!\n");
if(kbhit())
ch = getch();
}
printf("End!\n");
system("pause");
return 0;
}
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
while(!kbhit())
cout << "无键按下" << endl;
cout << "有键按下" << endl;
system("pause");
return 0;
}
函数名:kbhit()
功能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
用 法:int kbhit(void);
包含头文件: conio.h
kbhit()在执行时,检测是否有按键按下,有按下返回非0值,没有按下则返回0,是非阻塞函数;
不同于getch()的在执行时,检测按下什么键,如果不按键该函数不返回,也就不进行下一步操作,是阻塞函数。
当参数cmd为1时,bioskey()检测是否有键按下。没有键按下时返回0;有键按下时返回按键码(
任何按键码都不为0),但此时并不将检测到的按键码从键盘缓冲队列中清除。 是非阻塞函数;
当参数cmd为0时,bioskey()返回键盘缓冲队列中的按键码,并将此按键码从键盘缓冲队列中清
除。如果键盘缓冲队列为空,则一直等到有键按下,才将得到的按键码返回。是阻塞调用。
实际上,kbhit()有点像bioskey(1)
函数原型:int bioskey (int cmd)
说明:bioskey()的函数原型在bios.h中(TC编译环境下的函数,VC无法使用)
bioskey()完成直接键盘操作,cmd的值决定执行什么操作。
cmd = 0:
当cmd是0,bioskey()返回下一个在键盘键入的值(它将等待到按下一个键)。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码,高8位存放该键的扫描码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫描码。
cmd = 1:
当cmd是1,bioskey()查询是否按下一个键,若按下一个键则返回非零值,否则返回0。
cmd = 2:
当cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert键的状态。各键状态存放在返回值的低8位字节中。
字节位 含义
0 右边Shift键状态
1 左边Shift键状态
2 Ctrl键状态
3 Alt键状态
4 ScrollLock键状态
5 NumLock键状态
6 CapsLock键状态
7 Insert键状态
字节位为1表示该键被按下,为0表示松开。
system是一个C语言和C++下的函数。windows操作系统下system () 函数详解主要是在C语言中的应用,system函数需加头文件
#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
void print()
{
printf(" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪╪\n");
printf("╔═══╧╧C语言关机程序 ╧╧═══╗\n");
printf("║※1.实现10分钟内的定时关闭计算机 ║\n");
printf("║※2.立即关闭计算机 ║\n");
printf("║※3.注销计算机 ║\n");
printf("║※0.退出系统 ║\n");
printf("╚═════════════════╝\n");
}
void main()
{
system("title 自动关机程序");
system("mode con cols=48 lines=25");
system("color 0B");
system("date /T");
system("TIME /T");
char cmd[20] = "shutdown -s -t ";
char t[5] = "0";
print();
int c;
scanf("%d", &c);
getchar();
switch(c)
{
case 1:
printf("您想在多少秒后自动关闭计算机?(0~600)\n");
scanf("%s", &t);
system(strcat(cmd, t));
break;
case 2:
system("shutdown -p");
break;
case 3:
system("shutdown -l");
break;
case 0:break;
default:printf("Error!\n");
}
system("pause");
exit(0);
}
system(“pause”)可以实现冻结屏幕,便于观察程序的执行结果;system(“CLS”)可以实现清屏操作。而调用color函数可以改变控制台的前景色和背景,具体参数在下面说明。
例如,用 system(“color 0A”); 其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下:
0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色