窗體內(nèi)檢測(cè)按鍵
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的魯山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
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ì)告訴你的。
執(zhí)行鍵盤(pán)事件方法如下:
第一步,點(diǎn)擊VS工具。
第二步,打開(kāi)后,新建一個(gè)Windows窗體應(yīng)用程序。
第三步,請(qǐng)看右下方Form的屬性欄。
第四步,雙擊KeyDown。
第五步,輸入提示按鍵代碼,如圖所示。
第六步,再次輸入代碼,設(shè)置屬性KeyPreview為true。
第七步,運(yùn)行程序,按下舉例F5,則會(huì)彈出提示,表明已經(jīng)成功獲。
用API?GetCursorPos ?
用Timer隔一段時(shí)間獲取一次鼠標(biāo)位置。
鍵盤(pán)輸入,用?GetKeyboardState
加點(diǎn)分的話就給你完整的代碼
Public?Class?NativeMethods
'獲取鼠標(biāo)位置
Declare?Function?GetCursorPos?Lib?"user32.dll"?_
(ByRef?lpPoint?As?System.Drawing.Point)?as?boolean
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
pinvoke點(diǎn)虐 : GetCursorPos (user32)
pinvoke點(diǎn)虐 : GetKeyboardState (user32)
1.
窗體有一個(gè)屬性
pressview(在
雜項(xiàng)
的倒數(shù)第二個(gè))
;
2.
這個(gè)屬性可以指示:是否從窗體接收鍵盤(pán)的輸入
3.
將其設(shè)置為
true
,窗體就可以接受鍵盤(pán)事件了
4.
然后通過(guò)委托
或者
調(diào)用子控件里面的函數(shù)過(guò)程
就可以實(shí)現(xiàn)鍵盤(pán)事件參數(shù)的傳遞,完成你所需要的功能了!
5.
望采納~
當(dāng)前文章:vb點(diǎn)虐
窗體鍵盤(pán) vb窗體位置的代碼
轉(zhuǎn)載來(lái)源:http://sd-ha.com/article16/ddsihdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站營(yíng)銷(xiāo)、響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、建站公司、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
聲明:本網(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)