猜盐好帮手
在猜盐中,有一些猜字的挑战,我们可以通过枚举汉字通过……
我们需要控制键盘的函数:
WINUSERAPI VOID WINAPI keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,ULONG_PTR dwExtraInfo);
一共有 4 个参数,其中第 1 个参数传入虚拟键值(控制键盘按键),第 3 个参数传入 按下/松开,因此我们可以模拟一个按键按下的过程:
void Press_(int x){
keybd_event(x,0,0,0);
keybd_event(x,0,KEYEVENTF_KEYUP,0);
}
下面是虚拟键值表,用于填写第一个参数:
| 虚拟控制键 | 16 进制表示 | 十进制表示 | 对应键盘位置说明 |
|---|---|---|---|
| VK_LBUTTON | 0x01 | 1 | 鼠标左键 |
| VK_RBUTTON | 0x02 | 2 | 鼠标右键 |
| VK_CANCEL | 0x03 | 3 | 中断键(Ctrl+Break) |
| VK_MBUTTON | 0x04 | 4 | 鼠标中键(滚轮按键) |
| VK_XBUTTON1 | 0x05 | 5 | 鼠标侧键1(前进键) |
| VK_XBUTTON2 | 0x06 | 6 | 鼠标侧键2(后退键) |
| VK_BACK | 0x08 | 8 | Backspace 退格键 |
| VK_TAB | 0x09 | 9 | Tab 制表键 |
| VK_CLEAR | 0x0C | 12 | 数字小键盘 Clear 清除键 |
| VK_RETURN | 0x0D | 13 | Enter 回车键 |
| VK_SHIFT | 0x10 | 16 | Shift 通用移位键(左右Shift) |
| VK_CONTROL | 0x11 | 17 | Ctrl 通用控制键(左右Ctrl) |
| VK_MENU | 0x12 | 18 | Alt 通用菜单键(左右Alt) |
| VK_PAUSE | 0x13 | 19 | Pause 暂停键 |
| VK_CAPITAL | 0x14 | 20 | Caps Lock 大写锁定键 |
| VK_ESCAPE | 0x1B | 27 | Esc 退出键 |
| VK_MODECHANGE | 0x1F | 31 | 输入法模式变更键 |
| VK_SPACE | 0x20 | 32 | 空格键 Space |
| VK_PRIOR | 0x21 | 33 | PageUp 上翻页键 |
| VK_NEXT | 0x22 | 34 | PageDown 下翻页键 |
| VK_END | 0x23 | 35 | End 末尾键 |
| VK_HOME | 0x24 | 36 | Home 起始键 |
| VK_LEFT | 0x25 | 37 | ← 左方向键 |
| VK_UP | 0x26 | 38 | ↑ 上方向键 |
| VK_RIGHT | 0x27 | 39 | → 右方向键 |
| VK_DOWN | 0x28 | 40 | ↓ 下方向键 |
| VK_SELECT | 0x29 | 41 | Select 选择键 |
| VK_PRINT | 0x2A | 42 | Print 打印键 |
| VK_EXECUTE | 0x2B | 43 | Execute 执行键 |
| VK_SNAPSHOT | 0x2C | 44 | PrintScreen 屏幕截图键 |
| VK_INSERT | 0x2D | 45 | Insert 插入键 |
| VK_DELETE | 0x2E | 46 | Delete 删除键 |
| VK_HELP | 0x2F | 47 | Help 帮助键 |
| VK_LWIN | 0x5B | 91 | 左侧 Windows 徽标键 |
| VK_RWIN | 0x5C | 92 | 右侧 Windows 徽标键 |
| VK_APPS | 0x5D | 93 | 右键菜单键(应用程序键) |
| VK_SLEEP | 0x5F | 95 | 系统睡眠键 |
| VK_NUMPAD0 | 0x60 | 96 | 数字小键盘 0 键 |
| VK_NUMPAD1 | 0x61 | 97 | 数字小键盘 1 键 |
| VK_NUMPAD2 | 0x62 | 98 | 数字小键盘 2 键 |
| VK_NUMPAD3 | 0x63 | 99 | 数字小键盘 3 键 |
| VK_NUMPAD4 | 0x64 | 100 | 数字小键盘 4 键 |
| VK_NUMPAD5 | 0x65 | 101 | 数字小键盘 5 键 |
| VK_NUMPAD6 | 0x66 | 102 | 数字小键盘 6 键 |
| VK_NUMPAD7 | 0x67 | 103 | 数字小键盘 7 键 |
| VK_NUMPAD8 | 0x68 | 104 | 数字小键盘 8 键 |
| VK_NUMPAD9 | 0x69 | 105 | 数字小键盘 9 键 |
| VK_MULTIPLY | 0x6A | 106 | 数字小键盘 * 乘号键 |
| VK_ADD | 0x6B | 107 | 数字小键盘 + 加号键 |
| VK_SEPARATOR | 0x6C | 108 | 数字小键盘 分隔键 |
| VK_SUBTRACT | 0x6D | 109 | 数字小键盘 - 减号键 |
| VK_DECIMAL | 0x6E | 110 | 数字小键盘 . 小数点键 |
| VK_DIVIDE | 0x6F | 111 | 数字小键盘 / 除号键 |
| VK_F1 | 0x70 | 112 | F1 功能键 |
| VK_F2 | 0x71 | 113 | F2 功能键 |
| VK_F3 | 0x72 | 114 | F3 功能键 |
| VK_F4 | 0x73 | 115 | F4 功能键 |
| VK_F5 | 0x74 | 116 | F5 功能键 |
| VK_F6 | 0x75 | 117 | F6 功能键 |
| VK_F7 | 0x76 | 118 | F7 功能键 |
| VK_F8 | 0x77 | 119 | F8 功能键 |
| VK_F9 | 0x78 | 120 | F9 功能键 |
| VK_F10 | 0x79 | 121 | F10 功能键 |
| VK_F11 | 0x7A | 122 | F11 功能键 |
| VK_F12 | 0x7B | 123 | F12 功能键 |
| VK_NUMLOCK | 0x90 | 144 | NumLock 数字锁定键 |
| VK_SCROLL | 0x91 | 145 | Scroll Lock 滚动锁定键 |
| VK_OEM_NEC_EQUAL | 0x92 | 146 | NEC 键盘等号专用键 |
| VK_LSHIFT | 0xA0 | 160 | 左侧 Shift 键 |
| VK_RSHIFT | 0xA1 | 161 | 右侧 Shift 键 |
| VK_LCONTROL | 0xA2 | 162 | 左侧 Ctrl 键 |
| VK_RCONTROL | 0xA3 | 163 | 右侧 Ctrl 键 |
| VK_LMENU | 0xA4 | 164 | 左侧 Alt 键 |
| VK_RMENU | 0xA5 | 165 | 右侧 Alt 键 |
#include<windows.h>
#include<iostream>
#include<string.h>
using namespace std;
int cnt=0;
void Press_(int x){
keybd_event(x,0,0,0);
keybd_event(x,0,KEYEVENTF_KEYUP,0);
}
void Put_(char ch){
if(ch=='\n')Press_(VK_RETURN);
else if(ch==' ')Press_(VK_SPACE);
else Press_(ch);
Sleep(3);
}
void put(string s,int t){
for(char u:s)Put_(u);
while(t--)Put_(VK_DOWN);
Put_(VK_SPACE);
cnt++;
if(cnt==10)Put_(VK_RETURN),cnt=0;
}
void put(string s){
for(int i=0;i<15;i++)put(s,i);
}
string ss[371]={"A","AI","AO","AN","ANG","O","OU","E","EI","ER","EN","ENG","BA","BO","BI","BU","BAI","BEI","BAO","BIE","BAN","BEN","BIN","BANG","BENG","BING","PA","PO","PI","PU","PAI","PEI","PAO","POU","PIE","PAN","PEN","PIN","PANG","PENG","PING","MA","MO","MI","MU","MAI","MEI","MAO","MOU","MIE","MAN","MEN","MIN","MANG","MENG","MING","FA","FO","FU","FEI","FOU","FAN","FEN","FANG","FENG","DA","DE","DI","DU","DAI","DEI","DUI","DAO","DOU","DIU","DIE","DUO","DAN","DENG","DING","DONG","DUAN","DUN","TA","TE","TI","TU","TAI","TUI","TAO","TOU","TIE","TUO","TAN","TANG","TENG","TING","TONG","TUAN","TUN","NA","NE","NI","NU","NV","NAI","NEI","NUO","NIAO","NIU","NIE","NUAN","NAN","NEN","NONG","NIAN","NIN","NIANG","NING","LA","LE","LI","LU","LV","LAI","LEI","LUO","LIAO","LIU","LIE","LUAN","LAN","LEN","LANG","LING","LONG","LIAN","LIN","LIANG","GA","GE","GU","GAI","GUI","GAO","GOU","GUA","GUO","GAN","GEN","GANG","GENG","GUANG","GUN","GUAN","KA","KE","KU","KAI","KUI","KAO","KOU","KUA","KUO","KAN","KEN","KANG","KENG","KUANG","KUN","KUAN","HA","HE","HU","HAI","HUI","HAO","HOU","HUA","HUO","HAN","HEN","HANG","HENG","HUANG","HUN","HUAN","JI","JU","JIA","JIE","JIU","JIAO","JIAN","JIN","JIANG","JING","JIONG","JUAN","QI","QU","QIA","QIE","QIU","QIAO","QIAN","QIN","QIANG","QING","QIONG","QUAN","XI","XU","XIA","XIE","XIU","XIAO","XIAN","XIN","XIANG","XING","XIONG","XUAN","ZHA","ZHE","ZHI","ZHU","ZHAI","ZHUI","ZHAO","ZHOU","ZHUA","ZHUO","ZHAN","ZHEN","ZHANG","ZHENG","ZHUANG","ZHUN","ZHUAN","CHA","CHE","CHI","CHU","CHAI","CHUI","CHAO","CHOU","CHUA","CHUO","CHAN","CHEN","CHANG","CHENG","CHUANG","CHUN","CHUAN","SHA","SHE","SHI","SHU","SHAI","SHUI","SHAO","SHOU","SHUA","SHUO","SHAN","SHEN","SHANG","SHENG","SHUANG","SHUN","SHUAN","RE","RI","RU","RUI","RAO","ROU","RUO","RAN","REN","RANG","RENG","RUN","RUAN","ZA","ZE","ZI","ZU","ZAI","ZUI","ZAO","ZOU","ZUO","ZAN","ZEN","ZANG","ZENG","ZUN","ZUAN","CA","CE","CI","CU","CAI","CUI","CAO","COU","CUO","CAN","CEN","CANG","CENG","CUN","CUAN","SA","SE","SI","SU","SAI","SUI","SAO","SOU","SUO","SAN","SEN","SANG","SENG","SUN","SUAN","YA","YE","YI","YU","YAO","YOU","YAN","YIN","YANG","YING","YONG","YUAN","YUE","YUN","WA","WO","WU","WAI","WEI","WAN","WEN","WANG","WENG","ZHI","CHI","SHI","RI","ZI","CI","SI","YI","WU","YU","YE","YUE","YUAN","YIN","YUN","YING"};
signed main(){
Sleep(5000);
for(int i=0;i<371;i++)put(ss[i]);
return 0;
}

浙公网安备 33010602011771号