vb如何查看键盘是否有效

如题所述

VB中怎样检测鼠标键盘动作?
鼠标可以触发mousemove、MouseDown、MouseUp事件。
键盘可以触发keydown、keypress、keyup事件。
vb键盘检测是否输入正确怎么编?
VB对ComboBox的输入内容进行检查,在失去光标焦点时判断输入内容是否符合要求,不正确则给出提示。
窗口中使用了临时标签,用来获得焦点,使组合框能够失去焦点,并在失去焦点时进行有效性检查。输入的数据不在列表中,重新输入即可。咳咳,高手来也~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
首先,添加一个标准模块,用来声明API函数和常量。其中编写了GetPressedKey()用来获得记录的一个键盘字符,TimerProc()函数用来记录所有的字符串,你有一点基础吧,这块的详细注释就不再赘述了。
Public_onst_T_CENTER=_1
Public_onst_T_WORDBREAK=_10
Type_ECT
left_s_ong
top_s_ong
right_s_ong
bottom_s_ong
End_ype
Declare_unction_rawTextEx_ib"user32"_lias"DrawTextExA"(ByVal_DC_s_ong,_yVal_psz_s_tring,_yVal__s_ong,_pRect_s_ECT,_yVal_n_s_ong,_yVal_pDrawTextParams_s_ny)_s_ong
Declare_unction_etTimer_ib"user32"(ByVal_wnd_s_ong,_yVal_IDEvent_s_ong,_yVal_Elapse_s_ong,_yVal_pTimerFunc_s_ong)_s_ong
Declare_unction_illTimer_ib"user32"(ByVal_wnd_s_ong,_yVal_IDEvent_s_ong)_s_ong
Declare_unction_etAsyncKeyState_ib"user32"(ByVal_Key_s_ong)_s_nteger
Declare_unction_etRect_ib"user32"(lpRect_s_ECT,_yVal_1_s_ong,_yVal_1_s_ong,_yVal_2_s_ong,_yVal_2_s_ong)_s_ong
Global_nt,_Save$,_Old$,_et$,_el
Function_etPressedKey()_s_tring
For_nt=32_o128
If_etAsyncKeyState(Cnt)_0_hen_'得到按键盘状态
GetPressedKey=_hr$(Cnt)_'转换为字符
Exit_or
End_f
Next_nt
End_unction
Sub_imerProc(ByVal_wnd_s_ong,_yVal_IDEvent_s_ong,_yVal_Elapse_s_ong,_yVal_pTimerFunc_s_ong)
Ret=_etPressedKey()
If_et_sOld_hen
sOld=_et
sSave=_Save+_Old
End_f
End_ub
在窗体模块中只是简单调用这两个函数,就可以实现对键盘的记录。单击Command1开始,单击Command2时,将显示记录到的字符。代码如下:
Private_ub_ommand1_Click()
MsgBox"开始。单击Command2时,将显示记录到的字符"
SetTimer_e.hwnd,0,1,_ddressOf_imerProc__'开始设置时钟
End_ub
Private_ub_ommand2_Click()
KillTimer_e.hwnd,0__'关闭时钟
MsgBox"记录的字符:"_vbCrLf_Chr(10)_sSave
End_ub
当然,这只是热身的一个小程序,你可以进一步改进,扩充本程序的功能,但基本功效,应该合你意吧。这是基础版的,想做木马,深着呢咱们可以再联系,我再教你其他的。但你也兑现诺言哦,嘻嘻祝你成功!
本人试运行了一下,显示了记录信息截图如图:
VB如何判断是否按下键盘上某个键
把判断代码放到KeyDown事件中,KeyCode是这个事件的参数,在别的过程里无效。
另外,要注意按键的接收对象,焦点在按钮则需要在按钮的KeyDown事件,或者设置窗体的KeyPreview=True,这样窗体总是能够接收到按键。
VB键盘判断按键
如果是在自己的程序中,可以利用自身的按键事件,如果是全局键盘,那就要用到键盘hook技术了,比较复杂。
PrivateSubForm_Load()
Label1.Caption=""
Text1=""
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then'回车键
Label1.Caption=1
ElseIfKeyAscii=8Then'退格键
Label1.Caption=2
Else'其他按键
Label1.Caption=3
EndIf
Me.Cls
PrintKeyAscii
EndSub
温馨提示:答案为网友推荐,仅供参考
相似回答