如果是在自己的程序中,可以利用自身的按鍵事件,如果是全局鍵盤(pán),那就要用到鍵盤(pán)hook技術(shù)了,比較復(fù)雜。
成都創(chuàng)新互聯(lián)公司專業(yè)提供四川電信機(jī)房托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購(gòu)買四川電信機(jī)房托管服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。
Private Sub Form_Load()
Label1.Caption = ""
Text1 = ""
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then '回車鍵
Label1.Caption = 1
ElseIf KeyAscii = 8 Then '退格鍵
Label1.Caption = 2
Else '其他按鍵
Label1.Caption = 3
End If
Me.Cls
Print KeyAscii
End Sub
用API ?GetKeyboardState?,判斷所有的鍵里哪些被按下了。
下面的是判斷鍵盤(pán)燈的狀態(tài)
Public?Class?NativeMethods
Private?Shared?keyState()?As?Byte
DllImport("user32.dll")?_
Private?Shared?Function?GetKeyboardState(ByVal?keyState()?As?Byte)?As?Boolean
End?Function
Private?Shared?Sub?Update()
keyState?=?New?Byte(256)?{}
Dim?result?As?Boolean?=?GetKeyboardState(keyState)
'?Check?for?error:
If?result?=?False?Then
Debug.WriteLine("GetKeyBoardState?error:?"??Marshal.GetLastWin32Error)
Throw?New?Exception("GetKeyBoardState?error:?"??Marshal.GetLastWin32Error)
End?If
End?Sub
Public?Enum?LightState
Off
[On]
End?Enum
'?Example?-?the?keyboard?lights...
Public?Shared?ReadOnly?Property?CapsLockState()?As?LightState
Get
Update()
Dim?isOn?As?Boolean?=?(keyState(Keys.CapsLock)?=?1)
Return?IIf(isOn,?LightState.On,?LightState.Off)
End?Get
End?Property
Public?Shared?ReadOnly?Property?NumLockState()?As?LightState
Get
Update()
Dim?isOn?As?Boolean?=?(keyState(Keys.NumLock)?=?1)
Return?IIf(isOn,?LightState.On,?LightState.Off)
End?Get
End?Property
Public?Shared?ReadOnly?Property?ScrollLockState()?As?LightState
Get
Update()
Dim?isOn?As?Boolean?=?(keyState(Keys.Scroll)?=?1)
Return?IIf(isOn,?LightState.On,?LightState.Off)
End?Get
End?Property
End?Class
窗體內(nèi)檢測(cè)按鍵
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.KeyPreview = True '注冊(cè)窗體的鍵盤(pán)事件
End Sub
在TextBox1中顯示按鍵代碼
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
TextBox1.Text = Str(e.KeyCode) + vbCrLf
End Sub
窗體沒(méi)有焦點(diǎn),用窗體監(jiān)測(cè)鍵盤(pán)輸入緩沖區(qū)可以解決,但這似乎可以用于監(jiān)測(cè)用戶輸入內(nèi)容,不要用于非法目的呀!所以就是知道也不會(huì)告訴你的。
Public?Class?Form1
Private?Sub?TextBox1_KeyPress(sender?As?Object,?e?As?KeyPressEventArgs)?Handles?TextBox1.KeyPress
If?Not?IsNumeric(e.KeyChar)?Then????'判斷是否為數(shù)字
e.Handled?=?True????‘如果不是數(shù)字,取消操作,不顯示字符
End?If
End?Sub
End?Class
這樣就好啦
選到TextBox1的keydown方法,然后val=keycode不行么?
焦點(diǎn)在哪個(gè)控件,哪個(gè)控件就會(huì)有keydown,沒(méi)有焦點(diǎn)也就不會(huì)有。
新聞標(biāo)題:vb.net判斷鍵盤(pán) vb判斷是否按下鍵盤(pán)的鍵
網(wǎng)頁(yè)地址:http://muchs.cn/article4/doccpoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站營(yíng)銷、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)