当前位置:文档之家› 国家二级VB机试(键盘与鼠标事件过程)模拟试卷5

国家二级VB机试(键盘与鼠标事件过程)模拟试卷5

国家二级VB机试(键盘与鼠标事件过程)模拟试卷5
国家二级VB机试(键盘与鼠标事件过程)模拟试卷5

国家二级VB机试(键盘与鼠标事件过程)模拟试卷5

(总分:52.00,做题时间:90分钟)

一、选择题(总题数:26,分数:52.00)

1.以下关于键盘事件的叙述中,错误的是

(分数:2.00)

A.按下键盘按键既能触发KeyPress事件,也能触发KeyDown事件

B.KeyDown、KeyUp事件过程中,大、小写字母被视作相同的字符

C.KeyDown、KeyUp事件能够识别Shift、Alt、Ctrl等键

D.KeyCode是KevPress事件的参数√

解析:解析:当用户按下并释放一个可打印的键盘字符时,KeyDown、KeyPress、KeyUp事件将依次发生。KeyDown、KeyUp事件过程有两个参数,其中KeyCode参数是表示所按键的位置信息的代码,同一字符大、小写状态下的KeyCode参数值相同。ShiR参数代表按键时Shift、Ctrl、Alt键的状态。

2.以下可以判断是否在文本框(名称为Text1)内按下了回车键的事件过程是

(分数:2.00)

A.Text1_Change

B.Text1_Click

C.Text1_KeyPress √

D.Text1_GotFocus

解析:解析:键盘事件过程,主要用于处理当按下或释放键盘上某个键时所执行的操作。当按下键盘上某个键时,将触发当前拥有焦点的对象的KeyPress事件。

3.以下说法中正确的是

(分数:2.00)

A.当焦点在某个控件上时,按下一个字母键,就会执行该控件的KeyPress事件过程√

B.因为窗体不接受焦点,所以窗体不存在自己的KeyPress事件过程

C.若按下的键相同,KeyPress事件过程中的KeyAscii参数与KeyDown事件过程中的KeyCode参数的值也相同

D.在KeyPress事件过程中,KeyAscii参数可以省略

解析:解析:本题考查的考点是有关键盘事件的。当控件具有焦点时,如果按下一个字母键,将会触发此控件的:KeyPress事件;窗体也有自己的KeyPress事件,由控件的KeyPreview属性决定是否触发;KeyAscii 参数是所按键的ASCII的代码,将每个字符的大、小写形式作为不同的键代码解释,不可省略;KeyCode 参数是表示所按键的位置信息的代码(将A和a作为同一个键返回,而从大键盘上输出的“1”和右侧小键盘上输入的“1”将被视作不同的字符)。

4.向文本框中输入字符时,下面能够被触发的事件是

(分数:2.00)

A.GotFocus

B.KeyPress √

C.Click

D.MouseDown

解析:解析:KeyPress(KeyAscii As Integer)事件是在对象具有焦点时,按下键盘上的键时触发的事件,KeyPress(KeyAscii As Integer)事件中KeyAscii参数是所按键的Ascii代码。

5.关于KeyPress事件,以下叙述中正确的是

(分数:2.00)

A.在控件数组的控件上按键盘键,不能触发KeyPress事件

B.按下键盘上任一个键时,都能触发KeyPress事件

C.按字母键时,拥有焦点的控件的KeyPress事件会被触发√

D.窗体没有KeyPress事件

解析:解析:当按下键盘上某个键时,将触发当前拥有焦点的对象的KeyPress事件。如果按下的是功能键如Alt、Shift等则不能触发此事件。窗体也具有KeyPress事件,在控件数组的控件上按键盘键也能触发KeyPress事件。

6.下列事件的事件过程中,参数是输入字符ASCII码的是

(分数:2.00)

A.KeyDown事件

B.KeyUp事件

C.KeyPress事件√

D.Change事件

解析:解析:当按下键盘上某个键时,将触发当前拥有焦点的对象的KeyPress事件。它的KeyAscii参数是所按键的ASCII码值,该参数传递一个字符,并且把字符的大、小写形式作为两种不同的字符。KeyDown 和KeyUp事件的参数KeyCode是按下键盘键的键值。

7.文本框Text1的KeyDown事件过程如下:Private Sub Text1_KeyDown(KeyCode As Integer,Shift As Integer)…End Sub其中参数KeyCode的值表示的是发生此事件时

(分数:2.00)

A.是否按下了Alt键或Ctrl键

B.按下的是哪个数字键

C.所按的键盘键的键码√

D.按下的是哪个鼠标键

解析:解析:本题考查的考点是有关键盘事件KeyDown的。KeyCode参数是表示所按键的位置信息的代码。

8.VB中有3个键盘事件:KeyPress、KeyDown、KeyUp,若光标在Text1文本框中,则每输入一个字母

(分数:2.00)

A.这3个事件都会触发√

B.只触发KeyPress事件

C.只触发KeyPress、 KeyUp事件

D.不触发其中任何一个事件

解析:解析:当控件具有焦点时,如果按下一个字母键,将会依次触发此控件的KeyDown、KeyUp和KeyPress 事件。

9.在窗体上画一个命令按钮和一个文本框(名称分别为Command1和Text),并把窗体的KevPreview属性设置为True,然后编写如下代码:Dim SaveAll As String Private Sub Form_KeyPress(KeyAscii_Private SUb Form_Load() As Integer)Text1.Text="":Text1.SetFocus SaveAll=SaveAll+Chr(KeyAscii)End SUb End SubPrivate Sub Commandl_Click() Text1.Text=LCase(SaveAll)+SavAllEnd Sub程序运行后,直接用键盘输入:VB,再单击命令按钮,则文本框中显示的内容为

(分数:2.00)

A.vbVB √

B.不显示任何信息

C.VB

D.出错

解析:解析:本题考查的考点是有关键盘事件的。KeyPreview属性用于设置是否在控件的键盘事件之前激活窗体的键盘事件。KeyPress(KeyAscii As Integer)事件是在对象具有焦点时,按下键盘上的键时触发的事件,KeyAscii参数是所按键的ASCII的代码,将每个字符的大、小写形式作为不同的键代码解释。本题中输入“VB”的时候触发了窗体的KeyPress事件,将全局变量SaveAll设置为了“VB”,所以单击命令按钮后,文本框中的值为“vbVB”。

10.窗体上有一个Text1文本框,并编写了下面事件过程:Private SUb Text1_KeyPress(KeyAscii As Integer) KeyAscii=KeyAscii+3End SUb程序运行时,在文本框中输入字符“A”,则在文本框中实际显示的是

(分数:2.00)

A.A

B.B

C.C

D.D √

解析:解析:KeyPress(KeyAscii As Integer)事件是在对象具有焦点时,按下键盘上的键时触发的事件,KeyAscii参数是所按键的Ascii的代码,将每个字符的大、小写形式作为不同的键代码解释。本题中令参数KeyAscii自加3,则为该字母后面第三个字母。

11.对于文本框Text1,能够获得按键的ASCII码值的事件过程是

(分数:2.00)

A.Text1 KeyUp

B.Text1 KeyPress √

C.Text1 Click

D.Text1 Change

解析:解析:KeyPress(KeyAscii As Integer)事件是在对象具有焦点时,按下键盘上的键时触发的事件,KeyAscii参数是所按键的Ascii的代码,将每个字符的大、小写形式作为不同的键代码解释。

12.将窗体的KeyPreview属性设为True,然后编写如下程序:Private SUb Form_KeyDown(KeyCode_ Private SUb Form_KeyPress(KeyAscii As Integer,Shift As Integer) As Integer) Print Chr(KeyCode) Print Chr(KeyAscii)End Sub End Sub运行程序时,按下字母键a,则窗体上显示的是

(分数:2.00)

A.A A

B.A a √

C.a A

D.a a

解析:解析:KeyCode参数是表示所按键的位置信息的代码,同一字符大、小写状态下的KeyCode参数值相同,都是大写字符的ASCII码值;KeyAscii参数是所按键的ASCII码值,该参数传递一个字符,并且把字符的大、小写形式作为两种不同的字符。

13.在窗体上画1名为Command1的命令按钮和1名Text1的文本框,再编写如下程序:Dim ss As String Private Sub Commandl_Click()Private Sub Text1_KeyPress(KeyAscii_ Dim m As String,i As Integer As Integer) For i=Len(ss)To 1 Step-1 If Chr(KeyAscii)<>""Then m=m+Mid(ss,i,1)

ss=ss+Chr(KeyAscii) NextEnd Sub Text 1.Text=UCase(m) End Sub程序运行后,在文本框中输入“Number 100”,并单击命令按钮,则文本框中显示的是

(分数:2.00)

A.NUMBER 100

B.REBMUN

C.REBMUN 100

D.001 REBMUN √

解析:解析:KeyPress(KeyAscii As Integer)事件是在对象具有焦点时,按下键盘上的键触发的,KeyPress(KeyAscii As Integer)事件中KeyAscii参数是所按键的ASCII代码,该参数不显示键盘的物理状态,而只是传递一个字符代码。KeyPress将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。Chr()可返回ASCII码对应的字符。本题程序运行后,在文本框中每输入一个字符,将执行Text1 KeyPress事件过程,变量ss的值也随即变化,当输入“Number100”后,变量ss="Numberl00"。单击命令按钮后,执一行Commandl_Click事件过程,将字符串“Number100”中的字符逆序排列并以大写形式显示在文本框中,即“001 REBMIJN”。

14.窗体上有1个名称为Text1、内容为空的文本框。编写如下事件过程:Private Sub Text1_KeyUp(KeyCode As Integer,Shift As Integer) Print Text1.Text;End Sub运行程序,并在文本框中输入“123 ”,则在窗体上的输出结果为

(分数:2.00)

A.123

B.112

C.12123

D.112123 √

解析:解析:当对象具有焦点时,释放键盘上某个按下的键时将触发该对象的KeyUp事件,所以每在文本框中按键一次就会触发一次该事件,第一次输出1,第二次输出12,第三次输出123。

15.设窗体上有2个文本框Text1和Text2,并有下面的事件过程:Dim nPrivate Sub

Text1_KeyPress(KeyAscii As Integer) If"A"<=Chr(KeyAscii)And Chr(KeyAscii)<="Z"Then n=n+1 End If If KeyAscii:1 3 Then Text2.Text=nEnd Sub程序运行时,在文本框Textl中输入“Visual Basic 6.0”并按回车键后,在文本框Text2中显不的是

(分数:2.00)

A.2 √

B.9

C.13

D.16

解析:解析:KeyPress(KeyAscii As Integer)事件是在对象具有焦点时,按下键盘上的键触发的,KeyPress(KeyAscii As Integer)事件中KeyAscii参数是所按键的ASCII代码,该参数不显示键盘的物理状态,而只是传递一个字符代码。KeyPress将每个字符的大、小写形式作为不同的键代码解释,郾作为两种不同的字符。在本题中n的值是文本框中大写字母的个数。

16.若看到程序中有以下事件过程,则可以肯定的是,当程序运行时Private Sub Click_MouseDown(Button As Integer,_Shift As Integer,X As Single,Y As Single) Print"VB Program"End Sub

(分数:2.00)

A.用鼠标左键单击名称为“Commandl”的命令按钮时,执行此过程

B.用鼠标左键单击名称为“MouseDown”的命令按钮时,执行此过程

C.用鼠标右键单击名称为“MouseDown”的控件时,执行此过程

D.用鼠标左键或右键单击名称为“Click”的控件时,执行此过程√

解析:解析:鼠标按下事件(MouseDown)适用于窗体和大多数控件,包括复选框、命令按钮、单选按钮、框架、文本框、目录框、文件框、图像框、图片框、标签、列表框等。事件过程名格式为:控件名事件名,故本题Private Sub Click MouseDown中的Click应为控件名。

17.设有窗体的Form MouseMove事件过程如下:Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) If(Button And 3)=3 Then Print"检查按键" End If End Sub关于上述过程,以下叙述中正确的是

(分数:2.00)

A.按下鼠标左键时,在窗体上显示“检查按键”

B.按下鼠标右键时,在窗体上显示“检查按键”

C.同时按下鼠标左、右键时,在窗体上显示“检查按键”√

D.不论做何种操作,窗体上都不会显示

解析:解析:鼠标事件的Button参数用以表示被按下的鼠标键,可以取3个值,按下左键取值为1,按下右键取值为2,按下中键取值为4,若同时按下多个键,则取值为多个键值之和。

18.要求当鼠标在图片框P1中移动时,立即在图片框中显示鼠标的位置坐标。下面能正确实现上述功能的事件过程是

(分数:2.00)

A.Private Sub P1_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) Print X,Y End Sub

B.Private Sub P1_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single) Picture.Print X,Y End Sub

C.Private Sub P1_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) P1.Print X,Y End Sub √

D.Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) P1.Print X,Y End Sub

解析:解析:在图片框中移动鼠标触发的事件是P1。MouseMove事件,在事件中控制在图片框中输出坐标。

19.窗体的MouseUp事件过程如下:Private Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)……End Sub关于以上定义,以下叙述中错误的是

(分数:2.00)

A.根据Shift参数,能够确定使用转换键的情况

B.根据X、Y参数可以确定触发此事件时鼠标的位置

C.BuRon参数的值是在MouseUp事件发生时,系统自动产生的

D.MouseUp是鼠标向上移动时触发的事件√

解析:解析:鼠标状态事件又分为按下事件(MouseDown)、移动事件(MouseMove)和弹起事件(MouseUp),这三个事件具有相间的参数。Button参数的值是在MouseUp事件发生时,系统自动产生的,代表按下的是那个鼠标键;Shift参数确定使用转换键的情况;X、Y参数可以确定触发此事件时鼠标的位置。

20.命令按钮Commandl的MouseUp事件过程结构如下:Private Sub Commandl_MouseUp(Button As Integer,Shift As Intege,X As Single,Y As Single)……End SUb 则以下叙述中错误的是

(分数:2.00)

A.X、Y参数表示的是Commandl左上角在窗体中的位置√

B.Button参数用于确定按下的鼠标键

C.Shift参数用于确定是否按下了Alt、Ctrl或Shift键

D.MouseUp表示抬起鼠标按键时触发的事件

解析:解析:鼠标状态事件又分为按下事件(MouseDown)、移动事件(MouseMove)和弹起事件(MouseUp),这三个事件具有相同的参数。Button参数的值是在MouseUp事件发生时,系统自动产生的,代表按下的是那个鼠标键;Shift参数确定使用转换键的情况;X、Y参数可以确定触发此事件时鼠标的位置。

21.有下面事件过程:Private Sub Form_MouseMove(Button As Intege,Shift As Integer,X As Single,Y As Single) If Button=2 Then Form1.PSet(X,Y)'PSet方法可以在X,Y处画一个点 End IfEnd Sub 程序运行后,产生的效果是

(分数:2.00)

A.在窗体上每单击鼠标左键一次,就在鼠标位置处画一个点

B.按着鼠标左键,移动鼠标,可在窗体上画出鼠标的运动轨迹

C.按着鼠标右键,移动鼠标,可在窗体上画出鼠标的运动轨迹√

D.不按任何鼠标键,移动鼠标,可在窗体上画出鼠标的运动轨迹

解析:解析:鼠标事件分点击事件和状态事件:点击事件有单击(Click)和双击(DblClick),不区分左右键;状态事件有按下(MouseDown)、移动(MouseMove)和弹起(MouseUp),能够区分出鼠标的左、右和中间键。如果鼠标按钮是当其指针在窗体或控件之上时被按下并释放,则该对象将“捕获”鼠标并接收全部与该对象相关的鼠标事件。在本题代码中当鼠标移动时触发MouseMove事件,此时判断按下的鼠标键为右键(Button=2)时,则在窗体鼠标指针经过的位置依次画点,从而形成一条线。

22.窗体上已有1个名称为Picture1的图片框,要求实现下面2个功能之一:(1)在窗体上移动鼠标时,立即将Picture1显示在鼠标位置 (2)在窗体上单击鼠标时,立即将Picture1显示在鼠标位置下面不能实现上述任何功能的事件过程是

(分数:2.00)

A.Private Sub Form_MouseDown(BuRon As Integer,Shift As Integer,X As Single,Y As Single) Picture1.Move X,Y End Sub

B.Private Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single) Picture1.Move X,Y End Sub

C.Private Sub Form.MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single) Picture1.CurrentX=X:Picture1.CurrentY=Y End SUb √

D.Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) Picture1.Move X,Y End Sub

解析:解析:图片框的CurrentX和CurrentY属性会在程序运行时,返回或设置下一次打印或绘图位置的水平坐标和垂直坐标。Move方法用于移动窗体或控件,其语法:对象名.Move Left[,Top][,Width][,Height]。其中,Left和Top参数分别表示对象左侧的水平坐标和上侧的垂直坐标,Width和Height参数分别表示对象新的宽度和高度。

23.编写如下程序:Private Sub Form_Click() Print"Welcome!"End SubPrivate Sub

Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single) Print"欢迎!" End Sub Private Sub Form_MouseUp(Button As Imeger,Shift As Integer,X As Single,Y As Single) Print"

热烈欢迎!" End Sub程序运行后,单击窗体,输出结果为

(分数:2.00)

A.欢迎!热烈欢迎!Welcome! √

B.欢迎!Welcome!热烈欢迎!

C.Welcome!欢迎!热烈欢迎!

D.Welcome!热烈欢迎!欢迎!

解析:解析:鼠标事件分点击事件和状态事件:其中,点击事件有单击事件(Click)和双击事件(DblClick),这两个事件不区分左键和右键;状态事件又分为按下事件(MouseDown)、移动事件(MouseMove)和弹起事件(MouseUp),这3个事件能够区分出鼠标的左键、右键和中间键。当在控件和窗体上单击鼠标左键的时候,首先触发按下事件,然后触发单击事件,最后触发弹起事件。

24.下列操作说明中,错误的是

(分数:2.00)

A.在具有焦点的对象上进行一次按下字母键操作,会引发KeyPress事件

B.可以通过MousePointer属性设置鼠标光标的形状

C.不可以在属性窗口设置MousePointer属性√

D.可以在程序代码中设置MousePointer属性

解析:解析:在具有焦点的对象上进行一次按下字母键操作,会引发KeyPress事件。MousePointer属性用于设置或返回鼠标经过某对象时光标的形状类型,其值可以是0~15之间的任一整数,不同的值代表不同的形状,可以在程序设计时通过属性窗口设置,也可以在程序运行阶段通过代码设置。

25.窗体上有1个名称为Text1的文本框,1个名称为Label1的标签。程序运行后,如果在文本框中输入信息,则立即在标签中显示相同的内容。以下可以实现上述操作的事件过程为

(分数:2.00)

A.Private SUb Label1_Click() Label1.Caption=Text1.Text End Sub

B.Private Sub Label1 Change() Label1.Caption=Text1.Text End Sub

C.Private Sub Text1_Click() Label1.Caption=Text1:Text End Sub

D.Private Sub Text1_Change() Label1.Caption=Text1.Text End Sub √

解析:解析:当文本框中文本内容改变时将触发其Change事件,要在文本框中输入信息的同时立即在标签中显示相同的内容,需在文本框的Change事件过程中执行相关语句。

26.鼠标拖放控件要触发两个事件,这两个事件是

(分数:2.00)

A.DragOver事件和DragDrop事件√

B.Drag事件和DragDrop事件

C.MouseDown事件和KeyDown事件

D.MouseUp事件和KeyUp事件

解析:解析:与鼠标拖放有关的事件有DragDrop和DragOVer两个,其中DragOver在拖动控件到一个目标控件上释放鼠标键时触发,DragDrop在拖放过程中触发。

VB编程的键盘控制

V B编程的键盘控制Prepared on 21 November 2021

VB编程的键盘控制 我们利用VisualBASIC编写程序,多数情况只涉及到鼠标操作(如单击、双击、拖动等),但如果程序中需要实现文本编辑、热键激活或利用键盘进行游戏控制等功能时,将不可避免地碰到键盘捕获及处理的问题。下面,我们就来看一看VB编程中如何进行键盘控制。 一、概述 在VB中,很多控件都提供了键盘输入功能(如文本框、组合框等),但它们对键盘的处理较简单,遇到复杂一点的要求即无能为力。因而VB提供了KeyPress、KeyUp、KeyDown三种键盘事件,当用户按键时,会触发这三种事件,而且窗体和接受键盘输入的控件都识别这三种事件。下表对这些事件作了描述。 键盘事件触发原因 KeyPress按下某ASCII字符键 KeyDown按下键盘的任意键 KeyUp释放键盘的任意键 KeyPress事件无法检测到的情况: SHIFT、CTRL和ALT键的特殊组合。 光标控制键。 HOME、END、PAGEUP、PAGEDOWN等。 数字小键盘的数字键与打字键盘数字键的区别。 不仅响应按键操作而且响应释放键操作(KeyPress只响应按键操作)。 键盘事件彼此不相互排斥。按下某键时将生成KeyDown和KeyPress事件,而松开此键时生成KeyUp事件。当用户按下一个KeyPress不能检测的键时将触发KeyDown事件,松开此键时生成KeyUp事件。若使用KeyUp和KeyDown事件应确保KeyPress事件的功能不够用,通常编写KeyPress事件的代码比较容易。 二、KeyPress事件 在按下与ASCII字符对应的键时将触发KeyPress事件。ASCII字符集代表标准键盘的字母、数字和标点符号以及部分控制键(ENTER、TAB、BACKSPACE键等)。KeyDown和KeyUp事件能够检测其它功能键、编辑键和光标定位键。当处理标准ASCII字符时应使用KeyPress事件。例如,如果希望将输入到文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写:PrivateSubText1_KeyPress(KeyAsciiAsInteger) KeyAscii=Asc(Ucase(Chr(KeyAscii))) EndSub KeyAscii参数返回对应所按键的ASCII代码。 也可通过KeyPress事件识别部分控制键。例如,下述事件过程使用KeyPress检测用户是否正在按BACKSPACE键: PrivateSubText1_KeyPress(KeyAsciiAsInteger) IfKeyAscii=8ThenMsgBox"YouPressedtheBACKSPACEkey." EndSub 注:BACKSPACE键的ASCII值为8。 还可用KeyPress事件改变某些键的缺省行为。例如,当在文本框内按ENTER键就会结束当前行输入并将光标转到下一行(Multiline属性设为True)。在KeyPress事件中截断ENTER键(ASCII 值为13)就可避免这种情况:

利用VB建立鼠标键盘操作回放

利用VB建立鼠标键盘操作回放 很多的教学软件或系统监视软件可以自动记录回放用户的输入文字或点击按钮等操作操作,这个功能的实现是使用了Windows的Hook函数。本文介绍如何通过使用VB来实现鼠标键盘操作的纪录和回放。Windows提供API函数SetwindowsHookEx来建立一个Hook,通过这个函数可以将一个程序添加到Hook链中监视Windows消息,函数语法为: Public Declare Function SetWindowsHookEx Lib "user32" _ Alias "SetWindowsHookExA" _ (ByVal idHook As Long, _ ByVal lpfn As Long, _ ByVal hmod As Long, _ ByVal dwThreadId As Long) As Long 其中参数idHook指定建立的监视函数类型。通过Windows MSDN帮助可以看到,SetwindowsHookEx函数提供15种不同的消息监视类型,在这里我们将使用WH_JOURNALRECORD和WH_JOURNALPLAYBACK来监视键盘和鼠标操作。参数lpfn 指定消 息函数,在相应的消息产生后,系统会调用该函数并将消息值传递给该函数供处理。函数的一般形式为: Hookproc (code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall; 其中code为系统指示标记,wParam和lParam为附加参数,根据不同的消息监视类型而不同。只要在程序中建立这样 一个函数再通过SetwindowsHookEx函数将它加入到消息监视链中就可以处理消息了。 在不需要监视系统消息时需要调用提供UnHookWindowsHookEx来解除对消息的监视。WH_JOURNALRECORD和WH_JOURNALPLAYBACK类型是两种相反的Hook类型,前者获得鼠标、键盘动作消息,后者回放鼠 标键盘消息。所以在程序中我们需要建立两个消息函数,一个用于纪录鼠标键盘操作并保存到一个数组中,另一个用于 将保存的操作返给系统回放。 下面是具体的程序实现:首先建立一个新工程,在Form1中加入三个CommandButton控件用于控制消息钩子,另外还 可以增加若干Command或者TextBox控件用于检验操作回放的效果。然后在工程中增加一个模块文件,在模块中加入以下 定义和代码: Option Explicit Public Type EVENTMSG message As Long paramL As Long paramH As Long time As Long hwnd As Long End Type Public Declare Function CallNextHookEx Lib "user32" _ (ByVal hHook As Long, _

adb shell中模拟键盘鼠标事件

Android自动化测试初探-5:再述模拟键盘鼠标事件(adb shell 实现) 2010-07-28 17:01 上一篇博文中讲述了通过Socket编程从外部向Emulator发送键盘鼠标模拟事件,貌似实现细节有点复杂。其实Android还有一种更简单的模拟键盘鼠标事件的方法,那就是通过使用adb shell 命令。 1. 发送键盘事件: 命令格式1:adb shell input keyevent “value” 其中value以及对应的key code如下表所列: KeyEvent Value KEYCODE Comment KEYCODE_UNKNOWN 1 KEYCODE_MENU 在SDK2.1的模拟器中命令失效,sendevent命令可行 2 KEYCODE_SOFT_RIGHT 3 KEYCODE_HOME 4 KEYCODE_BACK 5 KEYCODE_CALL 6 KEYCODE_ENDCALL

KEYCODE_0 8 KEYCODE_1 9 KEYCODE_2 10 KEYCODE_3 11 KEYCODE_4 12 KEYCODE_5 13 KEYCODE_6 14 KEYCODE_7 15 KEYCODE_8 16 KEYCODE_9 17 KEYCODE_STAR

KEYCODE_POUND 19 KEYCODE_DPAD_UP 20 KEYCODE_DPAD_DOWN 21 KEYCODE_DPAD_LEFT 22 KEYCODE_DPAD_RIGHT 23 KEYCODE_DPAD_CENTER 24 KEYCODE_VOLUME_UP 25 KEYCODE_VOLUME_DOWN 26 KEYCODE_POWER 27 KEYCODE_CAMERA 28 KEYCODE_CLEAR

VB编程的键盘控制

VB编程的键盘控制 我们利用Visual BASIC编写程序,多数情况只涉及到鼠标操作(如单击、双击、拖动等),但如果程序中需要实现文本编辑、热键激活或利用键盘进行游戏控制等功能时,将不可避免地碰到键盘捕获及处理的问题。下面,我们就来看一看VB编程中如何进行键盘控制。 一、概述 在VB中,很多控件都提供了键盘输入功能(如文本框、组合框等),但它们对键盘的处理较简单,遇到复杂一点的要求即无能为力。因而VB提供了KeyPress、KeyUp、KeyDown 三种键盘事件,当用户按键时,会触发这三种事件,而且窗体和接受键盘输入的控件都识别这三种事件。下表对这些事件作了描述。 KeyDown和KeyUp事件提供了最低级的键盘响应,可用这些事件检测KeyPress事件无法检测到的情况: ◆SHIFT、CTRL和ALT键的特殊组合。 ◆光标控制键。 ◆HOME、END、PAGEUP、PAGEDOWN等。 ◆数字小键盘的数字键与打字键盘数字键的区别。 ◆不仅响应按键操作而且响应释放键操作(KeyPress只响应按键操作)。 键盘事件彼此不相互排斥。按下某键时将生成KeyDown和KeyPress事件,而松开此键时生成KeyUp事件。当用户按下一个KeyPress不能检测的键时将触发KeyDown事件,松开此键时生成KeyUp事件。若使用KeyUp和KeyDown事件应确保KeyPress事件的功能不够用,通常编写KeyPress事件的代码比较容易。 二、KeyPress事件 在按下与ASCII字符对应的键时将触发KeyPress事件。ASCII字符集代表标准键盘的字母、数字和标点符号以及部分控制键(ENTER、TAB、BACKSPACE键等)。KeyDown 和KeyUp事件能够检测其它功能键、编辑键和光标定位键。当处理标准ASCII字符时应使用KeyPress事件。例如,如果希望将输入到文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写: Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = Asc(Ucase(Chr(KeyAscii))) End Sub KeyAscii参数返回对应所按键的ASCII代码。 也可通过KeyPress事件识别部分控制键。例如,下述事件过程使用KeyPress检测用户是否正在按BACKSPACE键:

VC 模拟鼠标和键盘输入

VC 模拟鼠标和键盘输入 - 天下 - 博客频道 - https://www.doczj.com/doc/ca16594156.html, 模拟鼠标点击: 1、这里是鼠标左键按下和松开两个事件的组合即一次单击: mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ) 2、模拟鼠标右键单击事件: mouse_event (MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 ) 3、两次连续的鼠标左键单击事件构成一次鼠标双击事件: mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ) mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ) 4、使用绝对坐标 MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0 需要说明的是,如果没有使用MOUSEEVENTF_ABSOLUTE,函数默认的是相对于鼠标当前位置的点,如果dx,和dy,用0,0表示,这函数认为是当前鼠标所在的点--直接设定绝对坐标并单击 mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 1024, Y * 65536 / 768, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 1024, Y * 65536 / 768, 0, 0); 其中X,Y分别是你要点击的点的横坐标和纵坐标 模拟键盘输入: [cpp] void EnterString(const char* text) { bool bShift = false; size_t length = strlen(text); for(size_t index = 0;index < length;index++) { int val = text[index]; if(val >= 97 && val <= 122) //小写a-z { val -= 32; bShift = false; } else if(val >= 65 && val <= 90) //大写A-Z { bShift = true;

JAVA模拟键盘鼠标操作

//可以在eclipse下直接运行的示例程序: package key_robot; import java.awt.*; import java.awt.event.*; import javax.swing.JOptionPane; public class key_robot { public key_robot() { } // 鼠标单击,要双击就连续调用 private static void pressMouse(Robot r, int m, int delay) { r.mousePress(m); r.delay(10); r.mouseRelease(m); r.delay(delay); } // 键盘输入方法 private static void pressKeys(Robot r, int[] ks, int delay) { for (int i = 0; i < ks.length; i++) { r.keyPress(ks[i]); r.delay(10); r.keyRelease(ks[i]); r.delay(delay); } } public static void main(String[] args) throws Exception { final Robot rb = new Robot(); new Thread() { public void run() { rb.delay(2000); // 模拟回车 rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); } }.start();

模拟键盘鼠标事件

android中的MotionEvent 及其它事件处理 2014-09-18 08:47 7386人阅读评论(0) 收藏举报 MotionEvent对象 当用户触摸屏幕时将创建一个MotionEvent对象。MotionEvent包含关于发生触摸的位置和时间等细节信息。MotionEvent对象被传递到程序中合适的方法比如View对象的onTouchEvent()方法中。在这些方法中我们可以分析MotionEvent对象那个,以决定要执行的操作。 MotionEvent对象是与用户触摸相关的时间序列,该序列从用户首次触摸屏幕开始,经历手指在屏幕表面的任何移动,直到手指离开屏幕时结束。手指的初次触摸(ACTION_DOWN 操作),滑动(ACTION_MOVE操作)和抬起(ACTION_UP)都会创建MotionEvent对象。所以每次触摸时候这三个操作是肯定发生的,而在移动过程中会产生大量事件,每个事件都会产生对应的MotionEvent对象记录发生的操作,触摸的位置,使用的多大压力,触摸的面积,合适发生,以及最初的ACTION_DOWN和时发生等相关的信息。 在设置事件时我们有2种设置的方式,一种是委托式一种是回调式。第一种就是将事件的处理委托给监听器处理,你可以定义一个View.OnTouchListener接口的子类作为监听器,其中有onTouch()方法。而第二种是重写View类自己本身的onTouchEvent方法,也就是控件自己处理事件。onTouch方法接收一个MotionEvent参数和一个View参数,而onTouchEvent方法仅接收MotionEvent参数。这是因为监听器可以监听多个View 控件的事件。通过MotionEvent方法getation可以得到该Motionevent具体是哪个操作如ACTION_DOWN。 1、MotionEvent中getAction()与getActionMasked()的区别 如果我们在监听Ontouch()里面测试的时候会发现,这两个返回值竟然是一样的。查询API 我们发现ACTION_MASK说明是:Constant Value: 255 (0x000000ff)。也就是哦0Xff. public final intgetAction () Return the kind of action being performed. Consider using getActionMasked() and getActionIndex() to retrieve the separate masked action and pointer index. 翻译意思大概是返回action的类型,考虑使用getActionMasked()和getActionIndex()来获得单独的经过掩码的action和触控点的索引. public final intgetActionMasked () Return the masked action being performed, without pointer index information. Use getActionIndex() to return the index associated with pointer actions.

VB常用快捷键

VB常用快捷键 窗体设置,控件布局时用: alt+v+x可以快速显示出工具框 Alt+P+N 引用 ctrl+左右键头可以移动控件 shift+左右键头调整控件大小 F7 切换到编辑窗口 Shift+f7 切换代码窗口 开发代码,调试代码都能用的: Ctrl+C复制 Ctrl+V粘贴 Ctrl+X剪贴 Ctrl+F查找 开发代码时用的: Tab 向右推 Shift+Tab 向左推 Ctrl+H 替换 Ctrl+J 呵呵,有点显丑。有几个函数。老要看总是记不住,呵呵(Alt+→)ctrl+home jump to 首行 ctrl+end jump to 末尾 调试时使用的: F5 运行 F8 断点运行 F9 设置/清除断点 Ctrl+G 立即窗口 Shift+F2 到定义处 Ctrl+Shift+F9 清除所有断点 Ctrl+shift+F2 到上次编辑处 Ctrl+PauseBreak 强行暂停程序(专门对付死循环之类的) shift+F9 可以监视表达式 Ctrl+W 编辑监视窗口 Ctrl+n n Enter 偶经常要另开一个程序先做试验,你们可能很少用吧?呵呵以上几个,是我使用中最多的。当然。其它的我也有使用。如:Ctrl+J(所选控件置前),Ctrl+J(所选控件置底),F7,Shift+F4还有那些Windows通用的那些快捷

键:Ctrl+C,Ctrl+V ,哈哈,这二个快捷键,偶好像使用次数。也可以在所有使用快捷中前几名呢!哈哈! 1、F1:显示MSDN帮助。当然你要安装MSDN,否则得不到真正的帮助了 2、F2:显示对象浏览器。这里你可以看到对象的各种属性、方法与事件 3、F3:查找一下个满足条件的内容 4、F4:显示当前选中控件的属性窗体 5、F5:运行程序(https://www.doczj.com/doc/ca16594156.html,则是F8了) 6、F7:由窗体设计切换到对应的代码窗体 7、F8:单步执行程序 8、F9:切换断点 9、Alt+A:打开外接程序菜单 10、Alt+D:打开调试菜单 11、Alt+E:打开编辑菜单 12、Alt+F:打开文件菜单 13、Alt+H:打开帮助菜单 14、Alt+I:打开图表菜单 15、Alt+O:打开格式菜单 16、Alt+T:打开工具菜单 17、Alt+P:打开工程菜单 18、Alt+R:打开运行菜单 19、Alt+U:打开查询菜单 20、Alt+Q:退出 21、Alt+V:打开视图菜单 22、Alt+W:打开窗口菜单 23、Alt+→:根据输入的字符检索出可以使用的关键字 24、Tab:让选中的代码,集休缩进 25、Shift+F2:查看当前光标所在的变量或函数、子过程的定义。这一快捷键很方便,比如程序中有一个 call PubFunction ,你只要将鼠标在PubFunction 任意一处点中,然后按Shift+F2就可以直接转到函数的声明处。 26、Shift+F4:打开属性页窗口,与F4不一样哦 27、Shift+F5:重新启动 28、Shift+F7:由代码窗体切换到对应的窗体设计界面 29、Shift+F8:逐过程单步执行。按过程进行调试 30、Shift+F9:快速监视 31、Shift+Tab:让选中的代码集体凸出

总结Selenium WebDriver中一些鼠标和键盘事件的使用

本文将总结Selenium WebDriver 中的一些鼠标和键盘事件的使用,以及组合键的使用,并且将介绍WebDriver 中没有实现的键盘事件(Keys 枚举中没有列举的按键)的扩展。举例说明扩展Alt+PrtSc 组合键来截取当前活动窗口并将剪切板图像保存到文件。 在使用Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为。比如使用鼠标单击、双击、右击、拖拽等动作;或者键盘输入、快捷键使用、组合键使用等模拟键盘的操作。在WebDeriver 中,有一个专门的类来负责实现这些测试场景,那就是Actions 类,在使用该类的过程中会配合使用到Keys 枚举以及Mouse、Keyboard、CompositeAction 等类。 其次,在实际测试过程中,可能会遇到某些按键没办法使用Actions、Keys 等类来实现的情况。比如通过使用Alt+PrtSc 组合键来实现截取屏幕当前活动窗口的图像,在Keys 枚举中,因为没有枚举出PrtSc 键,所以没办法通过Action 的KeyDown(Keys) 来模拟按下这个动作。 再次是在自动化测试中,可能会遇到一些附件、文件上传的场景,或者是多文件上传,这些在Selenium2.0 之后,可以直接使用WebElement 类的sendKeys() 方法来实现。 下面就分别介绍这些情况的具体使用。 鼠标点击操作 鼠标点击事件有以下几种类型: 清单1. 鼠标左键点击 Actions action = new Actions(driver);action.click();// 鼠标左键在当前停留的位置做单击操作 action.click(driver.findElement(https://www.doczj.com/doc/ca16594156.html,(element)))// 鼠标左键点击指定的元素 清单2. 鼠标右键点击 Actions action = new Actions(driver); action.contextClick();// 鼠标右键在当前停留的位置做单击操作 action.contextClick(driver.findElement(https://www.doczj.com/doc/ca16594156.html,(element)))// 鼠标右键点击指定的元素 清单3. 鼠标双击操作 Actions action = new Actions(driver); action.doubleClick();// 鼠标在当前停留的位置做双击操作

VB 有关鼠标的操作

VB 有关鼠标的操作   假如没有鼠标,电脑的普及率绝对没有目前这么高。在windows下,鼠标的作用不亚于键盘。因此,在VB中设计基于windows下的应用程序,鼠标的操作和设计是非常重要的。 一、鼠标的移动、按键事件 要想在VB程序中自如应用鼠标,先要了解有关鼠标的事件,并学会如何编写这些事件过程。最常见的鼠标事件有: 当在某个对象上移动鼠标、按下鼠标按键、释放鼠标按键时均会触发鼠标事件,它们分别是:MouseMove、MouseDown、MouseUp。   这三个鼠标事件过程均会返回四个参数:Button As Integer, Shift As

具体解释如下: 1、 MouseDown事件 当单击鼠标上的任何一个按键之后,都会引起MouseDown事件。许多对象都有这个事件。如用鼠标在窗体上单击,可以引发这个事件,用鼠标单击“按钮”“标签”“文本框”等对象也可以引发这个事件。该事件还带回来不少参数,下面是鼠标单击窗体任何位置所引发的MouseDown事件,单击其它对象所带回的参数与此相同: Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Integer,Y As Integer)   End Sub 其中: (1)、Button参数 Button参数带回来的信息是用户按了鼠标上的哪能一个键,左键?右键?还是中间键? Button=1,说明用户按的是鼠标的左键; Button=2,说明用户按的是鼠标的右键; Button=4,说明用户按的是鼠标的中间键;   (2)、Shift参数 Shift参数带回来的是用户按鼠标按键时是否同时按下了键盘上的Shift、Ctrl、Alt键。 Shift=1,说明用户在按下鼠标按键的同时,还按下了键盘上的Shift键;Shift=2,说明用户在按下鼠标按键的同时,还按下了键盘上的Ctrl键;

USB模拟鼠标与键盘使用说明

第一章使用说明 1.1 功能简介 本例程是用实验板来模拟鼠标或键盘,即将相关程序下载到单片机,并将学习板与电脑通过U口连接后,本学习板可以当作U口的鼠标或者键盘来用。 其中能够模拟实现的鼠标功能为:鼠标左移、右移、上移、下移,鼠标左键按下和右键按下。 能够模拟实现的键盘功能为:数字1和2的键入、SHIFT和ALT功能键的键入、大小写切换和小键盘数字键功能的键入。 本例程共用到学习板上的六个按键,位于矩阵键盘左上角的S6、S7、S10、S11、S14和S15。 1.2鼠标的信息说明 将UsbMouse.hex文件下载到单片机中,且之后保证USB1口(位于学习板左上方)与电脑的U口处于连接状态(USB1口即为TX-1C开发板的U口)。 稍等片刻,便会先后在电脑屏幕的右下角出现下面两个提示(此提示只在第一次安装时出现): 图1.1 系统发现新硬件提示 图1.2安装成功提示 右键单击“我的电脑”,选中“管理”项,点击并进入,在其左侧的项目栏里点击“设备管理器”,便会发现其中多了如下一个设备,也就是我们的TX-1C开发板所模拟的鼠标,如图1.3所示。

图1.3 设备描述显示 双击“USB人体学输入设备”,会弹出如图1.4和图1.5的属性描述 图1.4 属性描述---常规选项卡

图1.5 属性描述---详细信息选项卡 1.3 鼠标的使用说明 在使用USB模拟鼠标与键盘功能之前,请确保将芯片PDIUSBD12左侧的两根插针用跳帽连接起来(这两根跳帽是用于芯片PDIUSBD12向单片机发出中断的连接线)!!! 总共使用到的矩阵键盘中的六个按键的功能分别如表1.1所示 据此, 面上实验一下,体会自制鼠标的乐趣。 1.4 键盘的相关说明 将文件夹“键盘实例”中的UsbKeyboard.hex文件下载到单片机中,并通过USB 线将TX-1C学习板与电脑U口连接后,同样会出现如图1.1.、图1.2类似的安装信息(也是在第一次安装时提示,以后都不再提示,除非更改程序中的相关设备描述信息,让电脑以为是一个以前从未连接过的设备连接了。)同样的打开设备管理器,也可以找到如图1.3、图1.4、图1.5类似的信息。在此就不再赘述了。下面列出相关按键的功能,如表1.2所示。

vb 属性、方法和事件概述

Visual Basic 属性、方法和事件 属性、方法和事件概述 Visual Basic 的窗体和控件是具有自己的属性、方法和事件的对象。可以把属性看作一个对象的性质,把方法看作对象的动作,把事件看作对象的响应。日常生活中的对象,如小孩玩的气球同样具有属性、方法和事件。气球的属性包括可以看到的一些性质,如它的直径和颜色。其它一些属性描述气球的状态(充气的或未充气的)或不可见的性质,如它的寿命。通过定义,所有气球都具有这些属性;这些属性也会因气球的不同而不同。 气球还具有本身所固有的方法和动作。如:充气方法(用氦气充满气球的动作),放气方法(排出气球中的气体)和上升方法(放手让气球飞走)。所有的气球都具备这些能力。 气球还有预定义的对某些外部事件的响应。例如,气球对刺破它的事件响应是放气,对放手事件的响应是升空。 如果能对气球编程的话,Visual Basic 代码将如下所示。其作用是设置气球的属性: Balloon.Color = Red Balloon.Diameter = 10 Balloon.Inflated = True 注意代码的语法,首先是对象(Balloon),接着是属性(Color),然后是赋值(Red)。重复这条语句,但是,换一个不同的值,就可以改变气球的颜色。属性也可以在程序设计阶段在“属性”窗口中设置。 调用气球的方法是这样的: Balloon.Inflate Balloon.Deflate Balloon.Rise 5 它的语法与属性的语法相似,对象(一个名词)后面紧跟着方法(一个动词)。在第三个例子中有一个附加项,称为一个参数,表示气球上升的高度。一些方法有一个或多个参数,它们对执行的动作做进一步的描述。 气球对一个事件的响应如下所示: Sub Balloon_Puncture() Balloon.Deflate Balloon.MakeNoise "Bang" Balloon.Inflated = False

VB模拟鼠标键盘动作

VB模拟鼠标键盘动作 有些时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用程序来代替人们按键的方法,这样可以把很多重复性的键盘操作交给程序来模拟,省了很多精力,按键精灵就是这样的一个软件。那么我们怎样才能用VB来写一个程序,达到与按键精灵类似的功能呢?那就让我们来先了解一下windows 中响应键盘事件的机制。 当用户按下键盘上的一个键时,键盘内的芯片会检测到这个动作,并把这个信号传送到计算机。如何区别是哪一个键被按下了呢?键盘上的所有按键都有一个编码,称作键盘扫描码。当你按下一个键时,这个键的扫描码就被传给系统。扫描码是跟具体的硬件相关的,同一个键,在不同键盘上的扫描码有可能不同。键盘控制器就是将这个扫描码传给计算机,然后交给键盘驱动程序。键盘驱动程序会完成相关的工作,并把这个扫描码转换为键盘虚拟码。什么是虚拟码呢?因为扫描码与硬件相关,不具有通用性,为了统一键盘上所有键的编码,于是就提出了虚拟码概念。无论什么键盘,同一个按键的虚拟码总是相同的,这样程序就可以识别了。简单点说,虚拟码就是我们经常可以看到的像VK_A,VK_B这样的常数,比如键A的虚拟码是65,写成16进制就是&H41,注意,人们经常用16进制来表示虚拟码。当键盘驱动程序把扫描码转换为虚拟码后,会把这个键盘操作的扫描码和虚拟码还有其它信息一起传递给操作系统。然后操作系统则会把这些信息封装在一个消息中,并把这个键盘消息插入到消息列队。最后,要是不出意外的话,这个键盘消息最终会被送到当前的活动窗口那里,活动窗口所在的应用程序接收到这个消息后,就知道键盘上哪个键被按下,也就可以决定该作出什么响应给用户了。这个过程可以简单的如下表示: 用户按下按键-----键盘驱动程序将此事件传递给操作系统-----操作系统将键盘事件插入消息队列-----键盘消息被发送到当前活动窗口 明白了这个过程,我们就可以编程实现在其中的某个环节来模拟键盘操作了。在VB中,有多种方法可以实现键盘模拟,我们就介绍几种比较典型的。 1.局部级模拟 从上面的流程可以看出,键盘事件是最终被送到活动窗口,然后才引起目标程序响应的。那么最直接的模拟方法就是:直接伪造一个键盘消息发给目标程序。哈哈,这实在是很简单,windows提供了几个这样的API函数可以实现直接向目标程序发送消息的功能,常用的有SendMessage和PostMessage,它们的区别是PostMessage函数直接把消息仍给目标程序就不管了,而SendMessage把消息发出去后,还要等待目标程序返回些什么东西才好。这里要注意的是,模拟键盘消息一定要用PostMessage函数才好,用SendMessage是不正确的(因为模拟键盘消息是不需要返回值的,不然目标程序会没反应),切记切记!PostMessage函数的VB声明如下: Declare Function PostMessage Lib"user32"Alias"PostMessageA"(ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As Long,lParam As Any) As Long 参数hwnd是你要发送消息的目标程序上某个控件的句柄,参数wMsg是消息的类型,表示你要发送什么样的消息,最后wParam和lParam这两个参数是随消

硬件模拟键盘鼠标,键鼠控制器KMC3

硬件模拟键盘鼠标(键鼠控制器KMC3) 1 概述 键鼠控制器KMC3,是一款通过RS232接口控制,输出标准键盘鼠标信号的设备,即可通过计算机的com口来控制它完成进行模拟硬件键盘鼠标的操作。主要应用场合为:彩票速打、游戏辅助、计算机自动控制、远程控制、多机同步操作等。 2 产品特点 速度快:键盘鼠标信号的模拟,每秒可达100个以上,只要串口能够将指令发送出来,它就能够将指令转换为键盘或者鼠标信号发送出去, 性能稳定:所有元器件均选用工业级器件,可保证长期稳定运行,决无误码与丢码现象。 兼容性好:输入端为标准RS232接口,可直接与计算机的com口连接;输出端为PS2接口,可直接连计算机的PS2键盘、鼠标接口,亦可通过转接线 转为usb接口。 控制简单:串口控制,指令协议简单,发送指令无需考虑时间间隔,连续发送即可;无需握手信号验证,只要串口能发送出去,就能保证转换成功。 与手工操作键盘鼠标完全相同:该设备完全模拟手工操作键盘鼠标的特点,通过com口控制指令转发出来的键盘鼠标信号与普通手工操作键盘鼠标没 有任何区别。 3 工作原理 键鼠控制器KMC3内嵌单片机,通过单片机完成RS232串口信号到键盘鼠标信号的转换过程;控制指令部分,键盘的指令根据手工操作特性,分为键盘的通码、断码两种,鼠标的指令部分根据手工操作鼠标的特点分为按键、移动等几个指令了;输出的键盘鼠标信号部分,是单片机软件模拟的符合PS2协议的信号,实际输出到计算机之后,其效果与硬件键盘、鼠标效果完全相同,同时该设备能够模拟键盘鼠标对计算机发出的各种控制指令进行响应;如果直接将设备连接到计算机的ps2接口,则计算机会默认该设备为普通的键盘鼠标设备,而无需

VB6全局键盘、鼠标钩子

VB: è????ü?ì?¢êó±ê13×ó '--------------------------------- 'Form '°2×°13×ó Private sub AddHook() '?ü?ì13×ó lHook(0) = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf CallKeyHookProc, App.hInstance, 0) 'êó±ê13×ó lHook(1) = SetWindowsHookEx(WH_MOUSE_LL, AddressOf CallMouseHookProc, App.hInstance, 0) End Sub 'D?13×ó Private sub DelHook() UnhookWindowsHookEx lHook(0) UnhookWindowsHookEx lHook(1) End Sub '--------------------------------- '?£?é Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy As Long) Public Type KEYMSGS vKey As Long 'Dé?a?? (and &HFF) sKey As Long 'é¨?è?? flag As Long '?ü°′??£o128 ì§?e£o0 time As Long 'Window??DDê±?? End Type Public Type MOUSEMSGS X As Long 'x×ù±ê Y As Long 'y×ù±ê a As Long b As Long time As Long 'Window??DDê±?? End Type Public Type POINTAPI

VC模拟鼠标键盘输入

vc模拟键盘输入 keybd_event(VK_LWIN, 0, 0 ,0); keybd_event('M', 0, 0 ,0); keybd_event('M', 0, KEYEVENTF_KEYUP ,0); keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0); 方法1: HWND hwnd=::FindWindow(0, "文档1"); //假设你要找的窗口标题为“文档1”CWnd::FromHandle(hwnd)->SetForegroundWindow(); ::PostMessage(hwnd, WM_KEYDOWN, VK_ESCAPE, 0L); //发送ESC按下的键盘消息 方法2:这里以向记事本程序发送Ctrl+s按键消息为例: CWnd *pWnd = FindWindow("Notepad", NULL); if (pWnd->GetSafeHwnd()) { pWnd->ShowWindow(SW_NORMAL); pWnd->SetForegroundWindow(); keybd_event(VK_CONTROL, 0, 0, 0); keybd_event('S', 0, 0, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); keybd_event('S', 0, KEYEVENTF_KEYUP, 0); } 对于其他程序,关键就是要找到就收消息的窗口句柄。 ::mouse_event(1) 模拟鼠标动作API函数mouse_event,它可以实现模拟鼠标按下和放开等动作。 VOID mouse_event( DWORD dwFlags, // 鼠标动作标识。 DWORD dx, // 鼠标水平方向位置。 DWORD dy, // 鼠标垂直方向位置。 DWORD dwData, // 鼠标轮子转动的数量。 DWORD dwExtraInfo // 一个关联鼠标动作辅加信息。 ); 其中,dwFlags表示了各种各样的鼠标动作和点击活动,它的常用取值如下:MOUSEEVENTF_MOVE 表示模拟鼠标移动事件; MOUSEEVENTF_LEFTDOWN 表示模拟按下鼠标左键; MOUSEEVENTF_LEFTUP 表示模拟放开鼠标左键; MOUSEEVENTF_RIGHTDOWN 表示模拟按下鼠标右键; MOUSEEVENTF_RIGHTUP 表示模拟放开鼠标右键; MOUSEEVENTF_MIDDLEDOWN 表示模拟按下鼠标中键;

键盘各键的值及事件

1、Dialog类 Dialog(Frame f,String s) 构造对话框,初始不可见,s是标题,f是对话框所依赖的窗口Dialog(Frame f,String s,boolean b) b设置初始是否可见 getTitle() 获取对话框标题 setTitle(String s) 设置对话框标题 setModal(boolean b) 设置对话框模式 setSize(int w,int h) 设置对话框大小 setVisible(boolean b) 显示或隐藏对话框 2、FileDialog类 Filedialog(Frame f,String s,int mode) mode的值是fileDialog.LOAD或者fileDialog.SAVE public String getDirectory() 获取当前文件对话框中显示的文件所属目录 public String getFile() 获取当前文件对话框中文件的字符串表示,不存在返回null Java中的鼠标和键盘事件 1、使用MouseListener借口处理鼠标事件 鼠标事件有5种:按下鼠标键,释放鼠标键,点击鼠标键,鼠标进入和鼠标退出 鼠标事件类型是MouseEvent,主要方法有: getX(),getY() 获取鼠标位置 getModifiers() 获取鼠标左键或者右键 getClickCount() 获取鼠标被点击的次数 getSource() 获取鼠标发生的事件源 事件源获得监视器的方法是addMouseListener(),移去监视器的方法是removeMouseListener() 处理事件源发生的时间的事件的接口是MouseListener 接口中有如下的方法mousePressed(MouseEvent) 负责处理鼠标按下事件 mouseReleased(MouseEvent) 负责处理鼠标释放事件 mouseEntered(MouseEvent) 负责处理鼠标进入容器事件 mouseExited(MouseEvent) 负责处理鼠标离开事件 mouseClicked(MouseEvent) 负责处理点击事件 2、使用MouseMotionListener接口处理鼠标事件 事件源发生的鼠标事件有2种:拖动鼠标和鼠标移动 鼠标事件的类型是MouseEvent 事件源获得监视器的方法是addMouseMotionListener() 处理事件源发生的事件的接口是MouseMotionListener 接口中有如下的方法mouseDragged() 负责处理鼠标拖动事件 mouseMoved() 负责处理鼠标移动事件 3、控制鼠标的指针形状 setCursor(Cursor.getPreddfinedCursor(Cursor.鼠标形状定义)) 鼠标形状定义见(书P 210)4、键盘事件 键盘事件源使用addKeyListener 方法获得监视器 键盘事件的接口是KeyListener 接口中有3个方法 public void keyPressed(KeyEvent e) 按下键盘按键 public void keyReleased(KeyEvent e) 释放键盘按键 public void keyTypde(KeyEvent e) 按下又释放键盘按键

相关主题
文本预览
相关文档 最新文档