kaixuan

模拟键盘输入字符串,由于字符的ASCII和键盘码不是一样的,所以写个函数出来自己用用!
由于我先现在需要输入的信息只是字符和数字,所以没有考虑中文的问题!

  1void EnterString(const char* text)
  2{
  3    bool bShift = false;
  4    size_t length = strlen(text);
  5    for(size_t index = 0;index < length;index++)
  6    {
  7        int val = text[index];
  8        if(val >= 97 && val <= 122)    //小写a-z
  9        {
 10            val -= 32;
 11            bShift = false;
 12        }

 13        else if(val >= 65 && val <= 90//大写A-Z
 14        {
 15            bShift = true;
 16        }

 17        else if(val >= 48 && val <= 57//数字0-9
 18        {
 19            bShift = false;
 20        }

 21        else //特殊符号
 22        {
 23            switch(val)
 24            {
 25            case \'`\':
 26                val = 192;
 27                bShift = false;
 28                break;
 29            case \'~\':
 30                val = 192;
 31                bShift = true;
 32                break;
 33            case \'!\':
 34                val = \'1\';    //!和1在同一个键盘,使用同一个键盘码,以下相同
 35                bShift = true;
 36                break;
 37            case \'@\':
 38                val = \'2\';    //@和2在同一个键盘,使用同一个键盘码,以下相同
 39                bShift = true;
 40                break;
 41            case \'#\':
 42                val = \'3\';
 43                bShift = true;
 44                break;
 45            case \'$\':
 46                val = \'4\';
 47                bShift = true;
 48                break;
 49            case \'%\':
 50                val = \'5\';
 51                bShift = true;
 52                break;
 53            case \'^\':
 54                val = \'6\';
 55                bShift = true;
 56                break;
 57            case \'&\':
 58                val = \'7\';
 59                bShift = true;
 60                break;
 61            case \'*\':
 62                val = \'8\';
 63                bShift = true;
 64                break;
 65            case \'(\':
 66                val = \'9\';
 67                bShift = true;
 68                break;
 69            case \')\':
 70                val = \'0\';
 71                bShift = true;
 72                break;
 73            case \'-\':
 74                val = 189;
 75                bShift = false;
 76                break;
 77            case \'=\':
 78                val = 187;
 79                bShift = false;
 80                break;
 81            case \'_\':
 82                val = 189;
 83                bShift = true;
 84                break;
 85            case \'+\':
 86                val = 187;
 87                bShift = true;
 88                break;
 89            case \'[\':
 90                val = 219;
 91                bShift = false;
 92                break;
 93            case \'{\':
 94                val = 219;
 95                bShift = true;
 96                break;
 97            case \']\':
 98                val = 221;
 99                bShift = false;
100                break;
101            case \'}\':
102                val = 221;
103                bShift = true;
104                break;
105            case \'\\\':
106                val = 220;
107                bShift = false;
108                break;
109            case \'|\':
110                val = 220;
111                bShift = true;
112                break;
113            case \';\':
114                val = 186;
115                bShift = false;
116                break;
117            case \':\':
118                val = 186;
119                bShift = true;
120            case \'\\'\':
121                val = 222;
122                bShift = false;
123                break;
124            case \'\"\':
125                val = 222;
126                bShift = true;
127                break;
128            case \',\':
129                val = 188;
130                bShift = false;
131                break;
132            case \'<\':
133                val = 188;
134                bShift = true;
135                break;
136            case \'.\':
137                val = 190;
138                bShift = false;
139                break;
140            case \'>\':
141                val = 190;
142                bShift = true;
143                break;
144            case \'/\':
145                val = 191;
146                bShift = false;
147                break;
148            case \'?\':
149                val = 191;
150                bShift = true;
151                break;
152            default:
153                break;
154            }

155        }

156
157        if(bShift)
158            keybd_event(VK_SHIFT,0,0,0);
159        keybd_event(val,0,0,0);
160        keybd_event(val,0,KEYEVENTF_KEYUP,0);
161        if(bShift)
162            keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
163    }

164}

分类:

技术点:

相关文章: