- 論壇徽章:
- 0
|
在工業(yè)自動(dòng)化領(lǐng)域中,經(jīng)常遇到要求鎖定鍵盤鼠標(biāo)的要求,防止無(wú)關(guān)人員誤操作造成事故.
鎖定鼠標(biāo)比較簡(jiǎn)單,有多種方法:
一:利用API函數(shù)ShowCursor.
對(duì)于每個(gè)WINDOWS窗口,系統(tǒng)都負(fù)責(zé)維護(hù)一個(gè)鼠標(biāo)時(shí)針計(jì)數(shù)器,當(dāng)這個(gè)計(jì)數(shù)器值小于0時(shí),隱藏鼠標(biāo)時(shí)針,針對(duì)當(dāng)前窗口,對(duì)其他窗口不起作用.這不是一個(gè)非常好的方法,因?yàn)樗徊伙@示鼠標(biāo)指針了,但還是起作用,如果有人胡亂按下鼠標(biāo),就可能觸發(fā)鼠標(biāo)事件.
Public Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Long) As Long
返回值是當(dāng)前鼠標(biāo)指針計(jì)數(shù)器的值,bShow=0是HIDE,bShow!=0,Display.
二:利用ClipCursor API
這個(gè)API函數(shù)是全局的,它可以把鼠標(biāo)指針限定在一個(gè)特定區(qū)域里,以像素點(diǎn)為單位.
Public Declare Function ClipCursor Lib "user32" Alias "ClipCursor" (lpRect As Any) As Long
ClipCursor(0,0,0,0); 則鼠標(biāo)指針固定在左上角點(diǎn).
三:利用BlockInput API,它封鎖了全部的鼠標(biāo)鍵盤操作.
它的問(wèn)題是如果同時(shí)按下,ALT+CTRL_DEL,則自動(dòng)解除鎖定
四:利用EnableWindow API,可以禁止鼠標(biāo)鍵盤對(duì)窗口的操作,只禁止自己的窗口.
Public Declare Function EnableWindow Lib "user32" Alias "EnableWindow" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
這個(gè)函數(shù)需要前面板的窗口句柄,我的一篇日志專門提到如何獲得窗口句柄.
五:一般的主板上都有鍵盤鎖定連接器,只要引出連接一個(gè)按鈕(工業(yè)控制計(jì)算機(jī)一般都引出),就可以徹底禁止鍵盤的操作,加上前面的鼠標(biāo)禁止操作,就可以完全禁止非法用戶操控計(jì)算機(jī)了. |
|