VB编程的键盘控制
VB源代码-键盘连击辅助
‘这是程序的核心代码,其他一些辅助的模块代码,请进VB源代码相关Private Sub Command1_Click()If (Text1.Text Like "[a-z]" Or Text1.Text Like "[0-9]" Or Text1.Text = "ENTER" Or Text1.Text = "enter" Or Text1.Text = "Enter") And Text2.Text <> "" ThenTimer1.Enabled = TrueText1.Enabled = FalseText2.Enabled = FalseCommand1.Enabled = FalseCommand2.Enabled = TrueElse: MsgBox "请仔细阅读提示,然后再输入!", , "提示"End IfEnd SubPrivate Sub Label4_Click()ShellExecute 0, "open", "/u/2461456205", vbNullString, vbNullString, 3 End SubPrivate Sub Text1_Change()Text1.MaxLength = 5End SubPrivate Sub Text2_KeyPress(KeyAscii As Integer)If KeyAscii <> 8 And KeyAscii < Asc(0) Or KeyAscii > Asc(9) Then KeyAscii = 0End SubPrivate Sub Command2_Click()Timer1.Enabled = FalseCommand1.Enabled = TrueCommand2.Enabled = FalseText1.Enabled = TrueText2.Enabled = TrueEnd SubPrivate Sub Form_Load()If Dir(App.Path & "\skin.urf") <> "" ThenDim bRes As BooleanbRes = SkinStart(App.Path & "\skin.urf", 2, "RQPJNW0N0V2QRMAP1KXVBHHDUVVQGUXR", 1, 0, 0)End IfLabel3.Caption = "1、键值:[小写a-z][0-9]" & vbCrLf & " [enter][ENTER][Enter]" & vbCrLf & "2、次数:只能是数字" & vbCrLf & "3、操作:最小化时会自动退至托盘后台执行!"Call CreatTray(Me, "显示/隐藏界面", "", "", 1)Timer1.Enabled = FalseCommand2.Enabled = FalseEnd SubPrivate Sub timer1_timer()On Error Resume NextIf Text1.Text = "a" ThenIf GetAsyncKeyState(vbKeyA) Then Dim i As IntegerFor i = 1 To Text2.TextSendKeys "{a}"Next iEnd IfElseIf Text1.Text = "b" ThenIf GetAsyncKeyState(vbKeyB) Then For i = 1 To Text2.TextSendKeys "{b}"Next iEnd IfElseIf Text1.Text = "c" ThenIf GetAsyncKeyState(vbKeyC) Then For i = 1 To Text2.TextSendKeys "{c}"Next iEnd IfElseIf Text1.Text = "d" ThenIf GetAsyncKeyState(vbKeyD) Then For i = 1 To Text2.TextSendKeys "{d}"Next iEnd IfElseIf Text1.Text = "e" ThenIf GetAsyncKeyState(vbKeyE) Then For i = 1 To Text2.TextSendKeys "{e}"Next iEnd IfElseIf Text1.Text = "f" ThenIf GetAsyncKeyState(vbKeyF) Then For i = 1 To Text2.TextSendKeys "{f}"Next iEnd IfElseIf Text1.Text = "g" ThenIf GetAsyncKeyState(vbKeyG) Then For i = 1 To Text2.TextSendKeys "{g}"Next iEnd IfElseIf Text1.Text = "h" ThenIf GetAsyncKeyState(vbKeyH) Then For i = 1 To Text2.TextSendKeys "{h}"Next iEnd IfElseIf Text1.Text = "i" ThenIf GetAsyncKeyState(vbKeyI) Then For i = 1 To Text2.TextSendKeys "{i}"Next iEnd IfElseIf Text1.Text = "j" ThenIf GetAsyncKeyState(vbKeyJ) Then For i = 1 To Text2.TextSendKeys "{j}"Next iEnd IfElseIf Text1.Text = "k" ThenIf GetAsyncKeyState(vbKeyK) Then For i = 1 To Text2.TextSendKeys "{k}"Next iEnd IfElseIf Text1.Text = "l" ThenIf GetAsyncKeyState(vbKeyL) Then For i = 1 To Text2.TextSendKeys "{l}"Next iEnd IfElseIf Text1.Text = "m" ThenIf GetAsyncKeyState(vbKeyM) Then For i = 1 To Text2.TextSendKeys "{m}"Next iEnd IfElseIf Text1.Text = "n" ThenIf GetAsyncKeyState(vbKeyN) Then For i = 1 To Text2.TextSendKeys "{n}"Next iEnd IfElseIf Text1.Text = "o" ThenIf GetAsyncKeyState(vbKeyO) Then For i = 1 To Text2.TextSendKeys "{o}"Next iEnd IfElseIf Text1.Text = "p" ThenIf GetAsyncKeyState(vbKeyP) Then For i = 1 To Text2.TextSendKeys "{p}"Next iEnd IfElseIf Text1.Text = "q" ThenIf GetAsyncKeyState(vbKeyQ) Then For i = 1 To Text2.TextSendKeys "{q}"Next iEnd IfElseIf Text1.Text = "r" ThenIf GetAsyncKeyState(vbKeyR) Then For i = 1 To Text2.TextSendKeys "{r}"Next iEnd IfElseIf Text1.Text = "s" ThenIf GetAsyncKeyState(vbKeyS) Then For i = 1 To Text2.TextSendKeys "{s}"Next iEnd IfElseIf Text1.Text = "t" ThenIf GetAsyncKeyState(vbKeyT) Then For i = 1 To Text2.TextSendKeys "{t}"Next iEnd IfElseIf Text1.Text = "u" ThenIf GetAsyncKeyState(vbKeyU) Then For i = 1 To Text2.TextSendKeys "{u}"Next iEnd IfElseIf Text1.Text = "v" ThenIf GetAsyncKeyState(vbKeyV) Then For i = 1 To Text2.TextSendKeys "{v}"Next iEnd IfElseIf Text1.Text = "w" ThenIf GetAsyncKeyState(vbKeyW) Then For i = 1 To Text2.TextSendKeys "{w}"Next iEnd IfElseIf Text1.Text = "x" ThenIf GetAsyncKeyState(vbKeyX) Then For i = 1 To Text2.TextSendKeys "{x}"Next iEnd IfElseIf Text1.Text = "y" ThenIf GetAsyncKeyState(vbKeyY) Then For i = 1 To Text2.TextSendKeys "{y}"Next iEnd IfElseIf Text1.Text = "z" ThenIf GetAsyncKeyState(vbKeyZ) Then For i = 1 To Text2.TextSendKeys "{z}"Next iEnd IfElseIf Text1.Text = "1" ThenIf GetAsyncKeyState(vbKey1) Then For i = 1 To Text2.TextSendKeys "{1}"Next iEnd IfElseIf Text1.Text = "2" ThenIf GetAsyncKeyState(vbKey2) Then For i = 1 To Text2.TextSendKeys "{2}"Next iEnd IfElseIf Text1.Text = "3" ThenIf GetAsyncKeyState(vbKey3) Then For i = 1 To Text2.TextSendKeys "{3}"Next iEnd IfElseIf Text1.Text = "4" ThenIf GetAsyncKeyState(vbKey4) ThenFor i = 1 To Text2.TextSendKeys "{4}"Next iEnd IfElseIf Text1.Text = "5" ThenIf GetAsyncKeyState(vbKey5) ThenFor i = 1 To Text2.TextSendKeys "{5}"Next iEnd IfElseIf Text1.Text = "6" ThenIf GetAsyncKeyState(vbKey6) ThenFor i = 1 To Text2.TextSendKeys "{6}"Next iEnd IfElseIf Text1.Text = "7" ThenIf GetAsyncKeyState(vbKey7) ThenFor i = 1 To Text2.TextSendKeys "{7}"Next iEnd IfElseIf Text1.Text = "8" ThenIf GetAsyncKeyState(vbKey8) ThenFor i = 1 To Text2.TextSendKeys "{8}"Next iEnd IfElseIf Text1.Text = "9" ThenIf GetAsyncKeyState(vbKey9) ThenFor i = 1 To Text2.TextSendKeys "{9}"Next iEnd IfElseIf Text1.Text = "0" ThenIf GetAsyncKeyState(vbKey0) ThenFor i = 1 To Text2.TextSendKeys "{0}"Next iEnd IfElseIf Text1.Text = "ENTER" Or Text1.Text = "enter" Or Text1.Text = "Enter" ThenIf GetAsyncKeyState(vbKeyReturn) Then For i = 1 To Text2.TextSendKeys "{enter}"Next iEnd IfEnd IfEnd SubPrivate Sub Timer2_Timer()Static c As Integerc = c + 1Select Case cCase 1Label4.ForeColor = vbGreenCase 2Label4.ForeColor = vbYellowCase 3Label4.ForeColor = vbBlueCase 4Label4.ForeColor = &HFF00&c = 0End SelectEnd Sub。
VB编程中的键盘和鼠标知识总结!
VB编程中的键盘和鼠标知识总结!大家好,今天我们来学习VB编程中的键盘与鼠标知识。
读书改变命运,这个理论在当今社会仍然适用。
并且越喜欢读书学习的人,越有更多机会去选择自己想要的生活。
不要惧怕读书的苦,这是你通向美好未来最好的路,共同努力!VB中的键盘与鼠标事件KeyPress事件KeyPress事件简介在窗体上画一个控件(指可以发生KeyPress事件的控件),并双击该控件,进入程序代码窗口后,从'过程'框中选取KeyPress,即可定义KeyPress事件过程。
一般格式为:Private Sub Text1_KeyPress(KeyAscii As Integer)'用户按下并释放一个能产生ASCII码的键时被触发End SubKeyPress事件带有一个参数,这个参数有两种形式:第1种形式是Index As Integer,只用于控件数组;第2种形式是KeyAscii As Integer,用于单个控件。
KeyDown和KeyUp事件KeyDown和KeyUp事件简介KeyDown和KeyUp事件的参数也有两种形式,其中Index As Integer只用于控件数组,而KeyCode As Integer,Shift As Integer用于单个控件。
KeyDown和KeyUp事件都有两个参数,即KeyCode和Shift。
①KeyCode是按键的实际ASCII码。
该码以'键'为准,而不是以'字符'为准。
②Shift转换键。
它指的是3个转换键的状态,包括Shift,Ctrl和Alt键,这3个键分别以二进制数形式表示,每个键有3位,即Shift 键为001,Ctrl键为010,Alt键为100。
Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)'用户按下任一个键时被触发End SubPrivate Sub Command1_KeyUp(KeyCode As Integer, Shift As Integer)'用户释放任一个键时被触发End Sub鼠标事件鼠标事件简介为了实现鼠标操作,Visual Basic中提供了以下3个事件过程。
vb键盘与鼠标事件过程上机指导
键盘与鼠标事件过程(上机指导)教学要求:掌握键盘事件KeyPress、KeyDown、KeyUp的基本方法;掌握鼠标事件MouseDown、MouseUp、MouseMove的基本方法;能利用键盘事件、鼠标事件进行程序设计。
知识点:各键盘事件的使用方法;各鼠标事件的使用方法。
内容导航:一、键盘事件(一)KeyPress事件该事件在单击键盘时发生。
它可获得按键的KeyAscii码,并不是单击任意一个键都会发生KeyPress事件,该事件只对会产生ASCII码的键有反应。
在窗体上画一个控件(指上面所讲的可以发生KeyPress事件的控件),双击该控件,进入程序代码窗口后,从“过程”框中选取KeyPress,即可以定义KeyPress事件过程。
一般格式为:Private Sub Command1_KeyPress(KeyAscii As Integer)… …End Sub(二)KeyDown事件和KeyUp事件当用户按下键盘上的任意一个键,便触发该对象的KeyDown事件,释放按键则触发KeyUp 事件。
由于按下键盘的键往往会立即放开,所以这两个事件的使用差别并不大。
KeyDown事件和KeyUp事件的参数有两种形式,其中Index As Integer只用于控件组,而KeyCode As Integer, Shift As Integer用于单个控件。
二、鼠标事件鼠标事件是由用户操作鼠标而引发的事件。
(一)Click事件用户单击鼠标键时发生,格式如下:Private Sub控件名_Click ( [ index As Integer ] )其中Index用于当控件是控件数组时传递的参数。
(二)DbClick事件用户双击鼠标键时发生,格式如下:Private Sub控件名_DbClick ( [ index As Integer ] )(三)MouseDown事件用户按下鼠标上的任一按钮时,就会引发该事件。
VB键盘字符代码
第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
注意:在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。
所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。
奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
为了便于查询,以下列出ASCII码表:常用ASCII 码对照表第128~255号为扩展字符(不常用),如需要请下载:完整的8位ASCII 字符表keycode 是键盘上每一个按键对应的码keycode如下:keycode 0 =keycode 1 =keycode 2 =keycode 3 =keycode 4 =keycode 5 =keycode 6 =keycode 7 =keycode 8 = BackSpace BackSpace keycode 9 = Tab Tabkeycode 10 =keycode 11 =keycode 12 = Clearkeycode 13 = Enterkeycode 14 =keycode 15 =keycode 16 = Shift_Lkeycode 17 = Control_Lkeycode 18 = Alt_Lkeycode 19 = Pausekeycode 20 = Caps_Lockkeycode 21 =keycode 22 =keycode 23 =keycode 24 =keycode 25 =keycode 26 =keycode 27 = Escape Escapekeycode 28 =keycode 29 =keycode 30 =keycode 31 =keycode 32 = space spacekeycode 33 = Priorkeycode 34 = Nextkeycode 35 = Endkeycode 36 = Homekeycode 37 = Leftkeycode 38 = Upkeycode 39 = Rightkeycode 40 = Downkeycode 41 = Selectkeycode 43 = Executekeycode 44 =keycode 45 = Insertkeycode 46 = Deletekeycode 47 = Helpkeycode 48 = 0 equal braceright keycode 49 = 1 exclam onesuperior keycode 50 = 2 quotedbl twosuperior keycode 51 = 3 section threesuperior keycode 52 = 4 dollarkeycode 53 = 5 percentkeycode 54 = 6 ampersandkeycode 55 = 7 slash braceleft keycode 56 = 8 parenleft bracketleft keycode 57 = 9 parenright bracketright keycode 58 =keycode 59 =keycode 60 =keycode 61 =keycode 62 =keycode 63 =keycode 64 =keycode 65 = a Akeycode 66 = b Bkeycode 67 = c Ckeycode 68 = d Dkeycode 69 = e E EuroSignkeycode 70 = f Fkeycode 71 = g Gkeycode 72 = h Hkeycode 73 = i Ikeycode 74 = j Jkeycode 75 = k Kkeycode 76 = l Lkeycode 77 = m M mukeycode 78 = n Nkeycode 79 = o Okeycode 80 = p Pkeycode 81 = q Q atkeycode 82 = r Rkeycode 83 = s Skeycode 84 = t Tkeycode 85 = u Ukeycode 87 = w Wkeycode 88 = x Xkeycode 89 = y Ykeycode 90 = z Zkeycode 91 =keycode 92 =keycode 93 =keycode 94 =keycode 95 =keycode 96 = KP_0 KP_0keycode 97 = KP_1 KP_1keycode 98 = KP_2 KP_2keycode 99 = KP_3 KP_3keycode 100 = KP_4 KP_4keycode 101 = KP_5 KP_5keycode 102 = KP_6 KP_6keycode 103 = KP_7 KP_7keycode 104 = KP_8 KP_8keycode 105 = KP_9 KP_9keycode 106 = KP_Multiply KP_Multiply keycode 107 = KP_Add KP_Add keycode 108 = KP_Separator KP_Separator keycode 109 = KP_Subtract KP_Subtract keycode 110 = KP_Decimal KP_Decimal keycode 111 = KP_Divide KP_Divide keycode 112 = F1keycode 113 = F2keycode 114 = F3keycode 115 = F4keycode 116 = F5keycode 117 = F6keycode 118 = F7keycode 119 = F8keycode 120 = F9keycode 121 = F10keycode 122 = F11keycode 123 = F12keycode 124 = F13keycode 125 = F14keycode 126 = F15keycode 127 = F16keycode 128 = F17keycode 129 = F18keycode 131 = F20 keycode 132 = F21 keycode 133 = F22 keycode 134 = F23 keycode 135 = F24 keycode 136 = Num_Lock keycode 137 = Scroll_Lock keycode 138 =keycode 139 =keycode 140 =keycode 141 =keycode 142 =keycode 143 =keycode 144 =keycode 145 =keycode 146 =keycode 147 =keycode 148 =keycode 149 =keycode 150 =keycode 151 =keycode 152 =keycode 153 =keycode 154 =keycode 155 =keycode 156 =keycode 157 =keycode 158 =keycode 159 =keycode 160 =keycode 161 =keycode 162 =keycode 163 =keycode 164 =keycode 165 =keycode 166 =keycode 167 =keycode 168 =keycode 169 =keycode 170 =keycode 171 =keycode 172 =keycode 173 =keycode 174 =keycode 175 =keycode 176 =keycode 177 =keycode 178 =keycode 179 =keycode 180 =keycode 181 =keycode 182 =keycode 183 =keycode 184 =keycode 185 =keycode 186 =keycode 187 = acute gravekeycode 188 = comma semicolon keycode 189 = minus underscore keycode 190 = period colonkeycode 191 =keycode 192 = numbersign apostrophe keycode 193 =keycode 194 =keycode 195 =keycode 196 =keycode 197 =keycode 198 =keycode 199 =keycode 200 =keycode 201 =keycode 202 =keycode 203 =keycode 204 =keycode 205 =keycode 206 =keycode 207 =keycode 208 =keycode 209 =keycode 210 = plusminus hyphen macron keycode 211 =keycode 212 = copyright registered keycode 213 = guillemotleft guillemotright keycode 214 = masculine ordfeminine keycode 215 = ae AEkeycode 216 = cent yenkeycode 217 = questiondown exclamdownkeycode 218 = onequarter onehalf threequarters keycode 219 =keycode 220 = less greater barkeycode 221 = plus asterisk asciitildekeycode 222 =keycode 223 =keycode 224 =keycode 225 =keycode 226 =keycode 227 = multiply divisionkeycode 228 = acircumflex Acircumflex keycode 229 = ecircumflex Ecircumflex keycode 230 = icircumflex Icircumflex keycode 231 = ocircumflex Ocircumflex keycode 232 = ucircumflex Ucircumflex keycode 233 = ntilde Ntildekeycode 234 = yacute Yacutekeycode 235 = oslash Oobliquekeycode 236 = aring Aringkeycode 237 = ccedilla Ccedillakeycode 238 = thorn THORNkeycode 239 = eth ETHkeycode 240 = diaeresis cedilla currency keycode 241 = agrave Agrave atilde Atilde keycode 242 = egrave Egravekeycode 243 = igrave Igravekeycode 244 = ograve Ograve otilde Otilde keycode 245 = ugrave Ugravekeycode 246 = adiaeresis Adiaeresiskeycode 247 = ediaeresis Ediaeresiskeycode 248 = idiaeresis Idiaeresiskeycode 249 = odiaeresis Odiaeresiskeycode 250 = udiaeresis Udiaeresiskeycode 251 = ssharp question backslash keycode 252 = asciicircum degreekeycode 253 = 3 sterlingkeycode 254 = Mode_switch。
vbSendKeys方法
vbSendKeys方法
1.模拟按键:
2.输入文本:
3.模拟组合键:
4.间隔时间:
5. 启用/禁用vbSendKeys方法:
需要注意的是,vbSendKeys方法在模拟键盘输入时,键盘焦点必须在接收输入的窗口上。
因此,在调用vbSendKeys方法前,可以使用AppActivate方法将焦点设置到指定的窗口上。
另外,vbSendKeys方法也可以结合循环和条件语句等控制结构,实现更复杂的键盘输入操作。
例如:
```
'循环输入数字1到9
For i = 1 To 9
Next i
'根据条件输入不同的文本
If condition = True Then
Else
End If
```
需要注意的是,vbSendKeys方法虽然可以实现自动化键盘输入操作,但它并不适用于所有情况。
特别是在与其他窗口同时交互或与网络操作相
关的应用程序中,可能会遇到一些问题。
在使用vbSendKeys方法时,应
谨慎选择使用场景,并测试确保其按预期工作。
总结:vbSendKeys方法是Visual Basic中的一个关键方法,用于模
拟键盘输入操作。
通过该方法,可以模拟按键、输入文本、模拟组合键等
操作。
并且可以结合循环和条件语句等控制结构,实现更复杂的键盘输入
操作。
使用vbSendKeys方法时,需要确保窗口焦点正确设置,且在特定
场景下会有一些限制。
VB程序设计课件第17讲 鼠标、键盘
Sub Form1_MouseDown(Sender As Object, e As ……)…… MouseUp: MouseUp:释放某一鼠标键 MouseMove: MouseMove:移动鼠标
2
对象 e
3
• e.X 和 e.Y :
鼠标的当前位置
例 显示鼠标指针所指位置
4
2. 键盘事件
Form1_KeyPress(Sender As Object, e As ……) e.KeyChar:按键的ASCII码 e.KeyChar:按键的ASCII码 ASCII e.Handled: e.Handled:是否响应本次按键操作 True: True:不响应 例:文本框的输入效应 False: False:响应
6
False: False:响应
区别
KeyPress 事件发生的时间 参数值 按Shift+A时 Shift+A时 事件发生的次数 按Shift+A时参数 Shift+A时参数 键盘大写状态) (键盘大写状态) 按Shift+a时参数 Shift+a时参数 键盘小写状态) (键盘小写状态) 按一ASCII键 按一ASCII键 ASCII e.KeyChar接收到 e.KeyChar接收到 ASCII值 ASCII值 事件发生一次 97 65 KeyDown和 KeyDown和KeyUp 按任意一个键 e.KeyCode接收到 e.KeyCode接收到 键的扫描码 事件发生两次 第一次是16 第一次是16 第二次是65 第二次是65 第一次是16 第一次是16 第二次是65 第二次是65
e.Button 操作左键 操作右键 操作中键 没按键 MouseButtons.Left MouseButtons.Right MouseButtons.Middle MouseButtons.None
VB程序设计键盘与鼠标事件过程
VB程序设计键盘与鼠标事件过程11.1 键盘事件在Visual Basic中,窗体和接受键盘输入的控件都能识别这三种键盘事件:一是KeyPress,按下对应某ASCII字符的键;二是KeyDown,按下键盘的任意键;三是KeyUp,释放键盘的任意键。
只有获得焦点的对象才能接受键盘事件。
11.1.1 KeyPress事件当按下某个键时,将触发拥有输入焦点(Focus)的那个控件的KeyPress事件,返回“所按字符”的ASCII码。
语法格式:Sub Object_KeyPress(KeyAscii As Integer)或Sub Object_KeyPress([index As Integer,]KeyAscii As Integer) 说明:1、Object:是指窗体或控件对象名;2、index:一个整数,它用来惟一标识一个控件数组中的控件;3、KeyAscii:是指KeyAscii参数返回对应ASCII字符代码的整型数值;KeyPress事件带有一个参数,这个参数有两种形式。
第一种形式为:Index As Integer,这种形式只用于控件数组;第二种形式为:KeyAscii As Integer,这种形式只用于单个控件。
11.1.2 KeyDown事件和KeyUp事件当按下或松开某个键时,将触发拥有输入焦点(Focus)的那个控件的KeyDown事件或者KeyUp事件,返回键盘的直接状态。
KeyDown事件和KeyUp事件的参数也有两种形式:(1)Index As Integer 只用于控件数组。
(2)KeyCode As Integer,Shift As Integer 用于单个控件,本章只讨论这种形式。
语法格式为:Sub Object_KeyDown(KeyCode As Integer,Shift AsInteger)Sub Object_KeyUp(KeyCode As Integer,Shift As Integer)说明:1.KeyCode参数KeyCode表示按下的物理键,以“键”为准,而不是以“字符”为准。
VB编程控制Windows中文输入法
VB编程控制Windows中文输入法
在Windows中我们可以用“Ctrl+Shift”键来调入或切换中文输入法,但是这样做每次都是使位于输入法列表顶端的那个输入法首先被调用。
通常我们都要连续按好几次“Ctrl+Shift”才能将习惯的输入法调出。
我编制了一段小程序,通过它可以把任意一个输入法放在输入法列表的顶端。
它的原理是:使用LoadKeyboardLayout函数可以改变输入法的顺序,只要在第一个参数中传递目标输入法的KeyboardlayoutName,第二个参数用KLF_REORDER就可以了。
例如,aa = LoadKeyboardLayout(″00000409″, KLF_REORDER) 使英文变成第一。
那怎样获得KeyboardlayoutName呢?因为使用GetKeyboardLayoutname可以返回当前输入法的KeyboardlayoutName,所以我们可以先用GetKeyboardLayoutList 函数来取得所有输入法,再用activateKeyboardlayout()函数设置当前输入法,最后就可以得到它的KeyboardlayoutName了。
具体步骤如下:
打开VB后选择标准的EXE文档,在Form1上添加一个Combobox和一个command控件,输入以下程序。
运行后,在combobox中选择目标输入法,按下command即可。
VB快捷键
VB快捷键VB快捷键命令快捷键说明编辑.分行Enter Shift + Enter插入一个新行。
编辑.折叠到定义Ctrl + M,Ctrl + O 自动确定在代码中创建区域(如过程)的逻辑边界,然后隐藏它们。
编辑.注释选定内容Ctrl + K,Ctrl + C 使用编程语言的正确注释语法将代码的当前行标记为注释。
编辑.删除水平空白Ctrl + K,Ctrl + \\折叠选定内容中的空白,如果没有选定内容,则删除与光标相邻的空白。
编辑.编排文档格式Ctrl + K,Ctrl + D 按“选项”对话框“文本编辑器”部分中的语言的“格式设置”窗格中的指定,应用该语言的缩进和空格格式设置。
编辑.格式化选定内容Ctrl + K,Ctrl + F根据周围的代码行,正确缩进选定的代码行。
编辑.隐藏选定内容Ctrl + M,Ctrl + H 隐藏选定文本。
信号图标标记隐藏文本在文件中的位置。
编辑.插入制表符Tab 将文本行缩进指定数量的空格,如 5 个。
仅在 .NET Framework 设计器中可用。
编辑.剪切行Ctrl + Y 将选择的所有行(或当前行,如果未选择任何行)剪切到剪贴板。
编辑.删除行Ctrl + Shift + Y删除所有选定行或当前行(如果没有选定行)。
编辑.上开新行Ctrl + Enter在插入点之上插入一个空行。
编辑.下开新行Ctrl + Shift + Enter在插入点之下插入一个空行。
编辑.行转置Shift + Alt + T将包含插入点的行移动到下一行之下。
编辑.改写模式Insert 改写文档中已有的字符,而不是插入字符。
仅在文本编辑器中可用。
编辑.停止隐藏当前区域Ctrl + M,Ctrl + U移除当前选定区域的大纲显示信息。
编辑.停止大纲显示Ctrl + M,Ctrl + P从整个文档中移除所有大纲显示信息。
编辑.交换定位点Ctrl + R,Ctrl + P交换当前选定内容的定位点与结束点。
VB——第6章 键盘和鼠标事件
KeyAscii = Asc(Ucase(Chr(KeyAscii))) End Sub Visual Basic程序设计教程
中国石油大学(华东)石油工程学院
6.1 键盘事件
例6.1 通过编程序,在一个文本框(Text1)中限定只能 输入数字、小数点,只能响应BackSpace 键及回车键。
Visual Basic程序设计教程
中国石油大学(华东)石油工程学院
6.3 鼠标事件
6.3.2 OLE 拖放 (简略介绍,一般不作要求) Visual Basic支持OLE 拖放,使用这种强大且实用的工具, 可以在其他支持 OLE 拖放的应用程序(如 Windows 资源管
中国石油大学(华东)石油工程学院
6.3 拖放操作
6.3.1 控件 拖 放 (简略介绍,一般不作要求)
在运行时拖动控件,通常情况下并不能自动改变控件位置, 这就必须使用Visual Basic的拖放功能,通过编程,才能实 现在运行时拖动控件并改变其位置。把按下鼠标按钮并移动 控件的操作称为拖动,把释放按钮的操作称为放下。
中国石油大学(华东)石油工程学院
6.2 鼠标事件
大多数控件能够识别鼠标的MouseMove、MouseDown和 MouseUp事件,通过响应这些鼠标事件,能在应用程序对鼠 标位置及状态的变化作出响应操作。 MouseMove 每当鼠标指针移动到屏幕新位置时发生
MouseDown
MouseUp
Visual Basic程序设计教程
中国石油大学(华东)石油工程学院
说明:
•index:唯一标识控件数组中的控件。 •Source:被拖放的控件。 •x,y:鼠标在目标对象中的位置坐标。 •过程名中的Form或对象名即为目标对象。
计算机应用基础VB程序设计第3讲键盘和鼠标操作及菜单设计
可以捕捉击键动作 例2:编写模拟打字机的过程。
Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Label1.Text = "" End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Label1.Text = Label1.Text & e.KeyChar End Sub
KeyPress、KeyDown、KeyUp 事件
3
键盘操作_续1
KeyPress事件
当用户按下并释放一个某个字符键时触发KeyPress事件 KeyPress事件过程的格式:
Private Sub <对象名>_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyPress … End Sub
10
鼠标操作_续2_举例
例4利用鼠标随手绘图。要求当按鼠标左键拖动时随手画线, 当按右键拖动并释放画圆。程序运行的界面如图所示。
程序
Dim centerx%, centery%, d% „所绘圆的圆心坐标和半径 Dim startx%, starty% „绘制直线时每一个小线段的起始点坐标 Dim mpaint As Graphics „创建Graphics对象 Dim mp As New Pen(Color.Blue, 2) Private Sub Form7_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.Font = New Font("", 14, FontStyle.Bold) mpaint = Me.CreateGraphics „初始化Graphics对象mpaint为窗体 End Sub
初三VB第4课学案键盘控制程序的分支结构
第四课学案算法:程序的分支结构键盘控制任务分析:➢“我的玛丽游戏”是由3个动作组成的,即,“行走”,、“越崖”、和“坠崖”。
而这3个动作是通过4个计时器的Timer事件实现的。
1.设计用户界面掌握程序设计的分支结构特点和作用,理解if/else条件分支语句的功能及用法,并能灵活运用其编写程序代码;掌握Enable属性,掌握键盘控制方法,并能灵活运用其解决实际问题。
计时器1:行走计时器2:跳起计时器3:落下按下空格键?TureFalse“玛丽”行走、跳跃的程序流程2.玛丽行走、越崖的程序设计步骤1:编写“玛丽”行走的事件过程代码:Rem 行走Private Sub Timer1_Timer()Image1.Left = Image1.Left - 200End Sub步骤2:编写“玛丽越崖“的事件过程代码。
Rem 跃起Private Sub Timer2_Timer()If Image1.Top > 3200 ThenImage1.Left = Image1.Left - 150 '向左移动Image1.Top = Image1.Top - 100 '向上移动ElseTimer2.Enabled = False '跃起计时器不可用Timer3.Enabled = True '落下计时器可用End IfEnd SubRem 落下Private Sub Timer3_Timer()If Image1.Top <= 3550 ThenImage1.Left = Image1.Left - 150 '向左移动Image1.Top = Image1.Top + 80 '向下移动ElseTimer3.Enabled = False '落下计时器不可用Timer1.Enabled = True '行走计时器可用End IfEnd Sub步骤3:设置“键盘控制的事件过程“Rem 键盘控制Private Sub Form_KeyPress(KeyAscii As Integer)If KeyAscii = 32 Then '是否按下空格键Timer2.Enabled = True '跃起计时器可用Timer1.Enabled = False '行走计时器不可用End IfEnd Sub注意:同一时刻只应有一个计时器设置为可用,凄然设置为不可用。
VB按键方案
VB按键⽅案VB中模拟按键的⽅法Visual Basic键盘是我们使⽤计算机的⼀个很重要的输⼊设备了,即使在⿏标⼤⾏其道的今天,很多程序依然离不开键盘来操作。
但是有时候,⼀些重复性的,很繁琐的键盘操作总会让⼈疲惫,于是就有了⽤程序来代替⼈们按键的⽅法,这样可以把很多重复性的键盘操作交给程序来模拟,省了很多精⼒,按键精灵就是这样的⼀个软件。
那么我们怎样才能⽤VB来写⼀个程序,达到与按键精灵类似的功能呢?那就让我们来先了解⼀下windows中响应键盘事件的机制。
当⽤户按下键盘上的⼀个键时,键盘内的芯⽚会检测到这个动作,并把这个信号传送到计算机。
如何区别是哪⼀个键被按下了呢?键盘上的所有按键都有⼀个编码,称作键盘扫描码。
当你按下⼀个键时,这个键的扫描码就被传给系统。
扫描码是跟具体的硬件相关的,同⼀个键,在不同键盘上的扫描码有可能不同。
键盘控制器就是将这个扫描码传给计算机,然后交给键盘驱动程序。
键盘驱动程序会完成相关的⼯作,并把这个扫描码转换为键盘虚拟码。
什么是虚拟码呢?因为扫描码与硬件相关,不具有通⽤性,为了统⼀键盘上所有键的编码,于是就提出了虚拟码概念。
⽆论什么键盘,同⼀个按键的虚拟码总是相同的,这样程序就可以识别了。
简单点说,虚拟码就是我们经常可以看到的像VK_A,VK_B 这样的常数,⽐如键A的虚拟码是65,写成16进制就是&H41,注意,⼈们经常⽤16进制来表⽰虚拟码。
当键盘驱动程序把扫描码转换为虚拟码后,会把这个键盘操作的扫描码和虚拟码还有其它信息⼀起传递给操作系统。
然后操作系统则会把这些信息封装在⼀个消息中,并把这个键盘消息插⼊到消息列队。
最后,要是不出意外的话,这个键盘消息最终会被送到当前的活动窗⼝那⾥,活动窗⼝所在的应⽤程序接收到这个消息后,就知道键盘上哪个键被按下,也就可以决定该作出什么响应给⽤户了。
这个过程可以简单的如下表⽰:⽤户按下按键-----键盘驱动程序将此事件传递给操作系统-----操作系统将键盘事件插⼊消息队列-----键盘消息被发送到当前活动窗⼝明⽩了这个过程,我们就可以编程实现在其中的某个环节来模拟键盘操作了。
VB模拟按键终极教程
VB模拟按键终极教程VB(Visual Basic)是一种可视化的编程语言,在Windows操作系统中得到广泛应用。
VB可以通过模拟按键实现自动化操作,比如自动填写表单、自动点击按钮等。
本教程将详细介绍如何使用VB来模拟按键操作的终极方法。
首先,我们需要创建一个新的VB项目。
打开VB开发环境,点击“新建项目”并选择“Windows桌面向导”。
在下一步中,选择“Windows窗体应用程序”并命名项目。
点击“确定”开始创建项目。
```Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _ByVal bScan As Byte, _ByVal dwFlags As Long, _ByVal dwExtraInfo As Long)Private Const KEYEVENTF_KEYUP = &H2```上述代码声明了一个名为keybd_event的函数和一个名为KEYEVENTF_KEYUP的常量。
keybd_event函数用于模拟按键操作,KEYEVENTF_KEYUP常量用于指定按键的释放事件。
然后,在Form_Load事件处理程序中添加以下代码,实现模拟按键操作:```Private Sub Form_Loadkeybd_event(VBKeyLMenu, 0, 0, 0) '按下左Alt键keybd_event(Keys.F, 0, 0, 0) '按下F键keybd_event(Keys.F, 0, KEYEVENTF_KEYUP, 0) '释放F键keybd_event(VBKeyLMenu, 0, KEYEVENTF_KEYUP, 0) '释放左Alt键End Sub```上述代码会在窗体加载时模拟按下左Alt键和F键,并在F键释放后释放左Alt键。
最后,我们需要在按钮的Click事件处理程序中添加代码来触发模拟按键操作。
基于VB的使用键盘实现光标控制软件的设计
基于VB的使用键盘实现光标控制软件的设计尹祥贵,王春永,周力,赵志强大连水产学院信息工程学院,大连 (116023)E-mail:yxg_80@摘要:本文描述了使用程序控制的方法,实现使用键盘的Enter、↑、↓、Esc、F1~F12键控制光标移动的基本设计方法,从而提高软件的可操作性和可用性。
关键词:可操作性,可用性,程序设计中图分类号:TP3111.引言对于一直没有从事过商业软件开发的软件爱好者来说,在设计软件时,通常只考虑程序是否能够执行,执行的结果是否正确,而较少考虑到程序的可操作性,即虽然设计的软件在逻辑上是正确的,但是在运行时,每个选项或文本框都要用鼠标选中后才能选择或输入数据,而不能用Enter、↑、↓、Esc、F1~F12键来控制光标的移动,很大程度上影响了软件的操作性[2]。
在此,本论文将简要介绍一下如何使用Enter、↑、↓、Esc、F1~F12键来控制光标的移动和相应的操作。
2.准备工作INI函数为后续编程方便和用键盘控制光标的移动,首先对画面中的每个控件进行编号,并根据光标在软件中的移动顺序设置它的上下位关系,部分代码如图1所示:图1 设置光标移动顺序(部分)其中CTRLTBL是一个包含三个属性(INEXT,IBACK,IDOWN)的一个类型,在按Enter、↑、↓键时求得光标将要移动到的控件的编号。
在程序运行中,光标会在某控件聚焦,有时需要改变各个功能按钮的名称,以及是否可用,在此设置了一组数组,来存储各个按钮的名称,在需要时改变他们显示的标题名称,代码如图2所示:图2 功能键标题设置同样,状态条也要显示与当前控件相关的内容,也相应的使用一个数组来存储状态条将要显示的内容,代码如图3所示:图3 状态条内容设置各功能按钮名,状态,是否可用等,需用函数来控制和显示,它在控件得到光标,并检查该控件能合法的得到光标后调用这个函数,并相应的调整画面的显示,代码如图4所示:图4 功能键控制函数另外,在INI函数其他初始操作在此不再赘述。
VB快捷键
VB快捷键命令快捷键说明编辑.分行Enter Shift + Enter插入一个新行。
编辑.折叠到定义Ctrl + M,Ctrl + O 自动确定在代码中创建区域(如过程)的逻辑边界,然后隐藏它们。
编辑.注释选定内容Ctrl + K,Ctrl + C 使用编程语言的正确注释语法将代码的当前行标记为注释。
编辑.删除水平空白Ctrl + K,Ctrl + \折叠选定内容中的空白,如果没有选定内容,则删除与光标相邻的空白。
编辑.编排文档格式Ctrl + K,Ctrl + D 按“选项”对话框“文本编辑器”部分中的语言的“格式设置”窗格中的指定,应用该语言的缩进和空格格式设置。
编辑.格式化选定内容Ctrl + K,Ctrl + F根据周围的代码行,正确缩进选定的代码行。
编辑.隐藏选定内容Ctrl + M,Ctrl + H 隐藏选定文本。
信号图标标记隐藏文本在文件中的位置。
编辑.插入制表符Tab 将文本行缩进指定数量的空格,如 5 个。
仅在 .NET Framework 设计器中可用。
编辑.剪切行Ctrl + Y 将选择的所有行(或当前行,如果未选择任何行)剪切到剪贴板。
编辑.删除行Ctrl + Shift + Y删除所有选定行或当前行(如果没有选定行)。
编辑.上开新行Ctrl + Enter在插入点之上插入一个空行。
编辑.下开新行Ctrl + Shift + Enter在插入点之下插入一个空行。
编辑.行转置Shift + Alt + T将包含插入点的行移动到下一行之下。
编辑.改写模式Insert 改写文档中已有的字符,而不是插入字符。
仅在文本编辑器中可用。
编辑.停止隐藏当前区域Ctrl + M,Ctrl + U移除当前选定区域的大纲显示信息。
编辑.停止大纲显示Ctrl + M,Ctrl + P从整个文档中移除所有大纲显示信息。
编辑.交换定位点Ctrl + R,Ctrl + P交换当前选定内容的定位点与结束点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB编程的键盘控制
我们利用Visual BASIC编写程序,多数情况只涉及到鼠标操作(如单击、双击、拖动
等),但如果程序中需要实现文本编辑、热键激活或利用键盘进行游戏控制等功能时,将不可避免地碰到键盘捕获及处理的问题。
下面,我们就来看一看VB编程中如何进行键盘控制
概述
在VB中,很多控件都提供了键盘输入功能(如文本框、组合框等),但它们对键盘的
处理较简单,遇到复杂一点的要求即无能为力。
因而VB提供了KeyPress、KeyUp KeyDown
三种键盘事件,当用户按键时,会触发这三种事件,而且窗体和接受键盘输入的控件都识
别这三种事件。
下表对这些事件作了描述。
表1键盘事件的触发原因
键盘事件触发原因
KeyPress 按下某ASCII字符键
KeyDow n 按下键盘的任意键
KeyUp 释放键盘的任意键
KeyDown和KeyUp事件提供了最低级的键盘响应,可用这些事件检测KeyPress事件无
法检测到的情况:
SHIFT CTRL和ALT键的特殊组合。
光标控制键。
数字小键盘的数字键与打字键盘数字键的区别不仅响应按键操作而且响应释放键操作
(KeyPress只响应按键操作)。
键盘事件彼此不相互排斥。
按下某键时将生成KeyDowr和KeyPress事件,而松开此键时生成KeyUp事件。
当用户按下一个KeyPress不能检测的键时将触发KeyDowr事件,松开此键时生成KeyUp事件。
若使用KeyUp和KeyDowr事件应确保KeyPress事件的功能不够用,通常编写KeyPress 事件的代码比较容易。
二、KeyPress 事件
在按下与ASCII字符对应的键时将触发KeyPress事件。
ASCII字符集代表标准键盘的字母、数字和标点符号以及部分控制键(ENTER TAB BACKSPACE等)。
KeyDowr和KeyUp 事件能够检测其它功能键、编辑键和光标定位键。
当处理标准ASCII字符时应使用KeyPress 事件。
例如,如果希望将输入到文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写:Private Sub Text1_KeyPress(KeyAscii As Ir teger)
KeyAscii = Asc(Ucase(Chr(KeyAscii)))
Erd Sub
KeyAscii参数返回对应所按键的ASCII代码。
也可通过KeyPress事件识别部分控制键。
例如,下述事件过程使用KeyPress检测用
户是否正在按BACKSPACE:
Private Sub Text1_KeyPress(KeyAscii As Ir teger)
If KeyAscii = 8 Then MsgBox "You Pressed the BACKSPACE key."
End Sub
注:BACKSPACE的ASCII 值为8。
还可用Keypress事件改变某些键的缺省行为。
例如,当在文本框内按ENTE键就会结束当前行输入并将光标转到下一行(Multiline 属性设为True )。
在KeyPress事件中截断ENTEF®(ASCII值为13)就可避免这种情况:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then KeyAscii = 0
End Sub
三、KeyUp和KeyDowr事件
KeyUp 和KeyDown事件报告键盘本身准确的物理状态:按下键(KeyDowr及松开键(KeyUp。
而KeyPress事件并不直接地报告键盘状态,它只提供键所代表的字符而不识别键的按下或松开状态。
进一步举例将有助于阐明这一差别。
输入大写"A"时,KeyDown事件获得"A"的ASCII
码。
在输入小写"a"时,KeyDown事件获得相同的ASCII码。
为区分大小写,KeyDown和KeyUp事件使用shift参数。
与此相对照的是,KeyPress事件将字母的大小写作为两个不同的ASCII字符处理。
KeyUp和KeyDown事件通过提供下列两参数返回输入字符的信息。
1 、Keycode 参数
字母键的Keycode与此字母大写字符的ASCII值相同,所以"A"和"a"的Keycode都是
由Asc("A")返回的数值;数字与标点符号键的Keycode与键上数字的ASCII码相同,因此"1"和"!"的Keycode都是由Asc ("1")返回的数值。
Private Sub Text1_Keydow n(KeyCode As In teger. Shift As In teger)
If KeyCode = 65 Then MsgBox "You pressed the A or a key."
End Sub
上例中按下"A"或"a"后都将显示消息框,为判断按下的字母是大写还是小写需用shift 参数。
可见,处理这些键时用KeyPress事件更方便。
KeyDown和KeyUp事件可识别标准键盘上的大多数控制键。
其中包括功能键(F1-F12)、编辑键(HOME PAGEUPDELETE等)、光标键()和数字小键盘上的键。
可以通过键代码常数或相应的ASCII值检测这些键。
例如:
Private Sub Text1_Keydow n(KeyCode As In teger, Shift As In teger)
If KeyCode = 36 The n MsgBox "You pressed the HOME key."
End Sub
VB中常用控制键的Keycode值见下表:
表2常用键的Keycode值
2、Shift 参数
键盘事件使用shift参数来判断按下某键的同时是否按下了SHIFT、CTRL ALT键或它
们的组合。
如果按SHIFT键,贝U shift 为1;按CTRL键,shift 为2;按ALT键,shift 为3,通过键值总和来判断这些组合。
例如,同时按下SHIFT和ALT键时shift等于5(1+4)。
在使用中,可将KeyDown与KeyUp事件及shift参数一同使用以区分字符的大小写或检测各种组合键。
例如,以下事件过程可捕获CTRL+ALT+F并给出提示:
Private Sub Text1_Keydow n(KeyCode As In teger, Shift As In teger)
If Keycode = 112 And Shift = 6 Then MsgBox "You press the CTRL+ALT+F1 Key!"
End Sub
四、编写窗体级键盘处理程序
只有获得焦点的对象才能够接受键盘事件。
当窗体为活动窗体且其上所有控件均未获得焦点时,窗体才获得焦点。
这种情况只有在空窗体或窗体上的控件都无效时才发生。
如果将窗体上的KeyPreview 属性设置为True ,则每个控件在识别其所拥有的KeyPress、KeyUR KeyDowr事件之前,窗体会抢先接受这些键盘事件。
当您希望无论何时按下某键都会执行同一个操作,而不管哪个控件在此时具有焦点时,这样设置KeyPreview 属性极为有用。
可在" 属性" 窗口中或通过Form_Load 过程中的代码设置窗体的KeyPreview 属性为True:
Private Sub Form_Load
Form1.KeyPreview = True
Erd Sub
需要注意的是,当把窗体的KeyPreview 属性设置为True 时,窗体在控件之前识别键盘事件,但对控件来说事件仍然会发生,这可能会造成一次按键触发多个不同的处理。
为防止这种情况,可在窗体键盘事件过程结束前将KeyAscii或KeyCode重置为0。
例如,在
窗体上将ENTE!键捕获并处理后,把KeyAscii或KeyCode设置为0,则控件在自己的键盘事件过程中将无法识别按下的ENTE!键,因而控件的键盘事件过程也不被调用。
下面,我们来看一个键盘处理的简单例子:设计一个窗体和文本框以及其它控件,无
论焦点在哪个控件,按下CTRL+P即让文本框显示"Hello !";按下ALT+C清除文本框;按下F10 结束程序
Private Sub Form_Load()
Form1.KeyPreview = True
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
80 And Shift = 2 Then Text1.Text = "Hello!"
If KeyCode
=
If KeyCode
67 And Shift = 4 Then Text1.Text = ""
=
If KeyCode
= 121 Then End
End Sub。