麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Visual Basic > 正文

用VB編寫鍵盤攔截程序

2024-09-07 17:32:50
字體:
來源:轉載
供稿:網友
我們知道,在一些程序中,有一些快捷方式(如:Shift鍵最小化、ESC鍵退出、Ctrl+S存盤、Alt+x退出等等)。以前有一些介紹使用Win32 API可以做到,但過于繁瑣,其實VB本身已經給我們提供了這個功能。

  我們來新建一個窗體Form1,對于鍵盤操作可以看到有三個事件KeyPress(),KeyDown和KeyUp,下面我對它們分別介紹:

  KeyPress()事件是當用戶按下和松開一個ANSI鍵時發生(ANSI是可見ASCII字符1-127)。

  語法   Private Sub object_KeyPress([index As Integer,]keyascii As Integer)   KeyPress事件語法包含下列部分:

  部分描述

  object一個對象表達式,其值是"應用于"列表中的一個對象。

  index一個整數,它用來唯一標識一個在控件數組中的控件(僅有控件數組時才有)。

  keyascii是返回一個標準數字ANSI鍵代碼的整數。Keyascii通過引用傳遞,對它進行改變可給對象。

  發送一個不同的字符。將keyascii改變為0時可取消擊鍵,這樣一來對象便接收不到字符。

  說明

  具有焦點的對象接收該事件。一個窗體僅在KeyPreview屬性被設置為True時才能接收該事件。一個KeyPress事件可以引用任何可打印的鍵盤字符,一個來自標準字母表的字符或少數幾個特殊字符之一的字符與CTRL鍵的組合,以及ENTER或BACKSPACE鍵。KeyPress()事件過程在截取TextBox或ComboBox控件所輸入的擊鍵時是非常有用的。它可立即測試擊鍵的有效性或在字符輸入時對其進行格式處理。改變keyascii參數的值會改變所顯示的字符。

  可使用下列表達式將keyascii參數轉變為一個字符:   Chr(KeyAscii)   然后執行字符串操作,并將該字符反譯成一個控件可通過該表達式解釋的ANSI數字:   KeyAscii = Asc(char)   在KeyPress()處理不了的功能可以由KeyDown()和KeyUp()事件來處理:   語法   Private Sub object_KeyDown([index As Integer,]keycode As Integer, shift As Integer)   Private Sub object_KeyUp([index As Integer,]keycode As Integer, shift As Integer)   KeyDown和KeyUp事件包括下列部分:   部分描述   object一個對象表達式,其值是"應用于"列表中的一個對象。   index是一個整數,它用來唯一標識一個在控件數組中的控件(僅有控件數組時才有)。   keycode是一個鍵代碼,諸如vbKeyF1(F1鍵)或vbKeyHome(HOME鍵)。   shift是在該事件發生時響應SHIFT ,CTRL和ALT鍵的狀態的一個整數。shift、CTRL、ALT鍵在這些位分別對應于值1、2和4。例如:如果CTRL和ALT這兩個鍵都被按下,則shift的值為6。

  說明

  對于這兩個事件來說,帶焦點的對象都接收所有擊鍵。一個窗體只有在不具有可視的和有效的控件時才可以獲得焦點。雖然KeyDown()和KeyUp()事件可應用于大多數鍵,它們最經常地還是應用于:擴展的字符鍵如功能鍵、定位鍵、鍵盤修飾鍵和按鍵的組合、區別數字小鍵盤和常規數字鍵;在需要對按下和松開一個鍵都響應時,可使用KeyDown和KeyUp事件過程。

  下列情況不能引用KeyDown和KeyUp事件:窗體有一個CommandButton控件,并且Default屬性設置為True時的ENTER鍵。窗體有一個CommandButton控件,并且Cancel屬性設置為True時的ESC鍵、TAB鍵,KeyDown和KeyUp用兩種參數解釋每個字符的大寫形式和小寫形式:keycode-顯示物理的鍵(將A和a作為同一個鍵返回)和shift-顯示shift+key鍵的狀態而且返回A或a其中之一。

  如果需要測試shift參數,可使用該參數中定義各位的shift常數。該常數有下列值:

  常數值描述

  vbShiftMask 1 HIFT鍵的位

  屏蔽。

  VbCtrlMask 2 CTRL鍵的

  位屏蔽。

  VbAltMask 4 ALT鍵的位

  屏蔽。

  該常數用作位屏蔽,它可被用來測試任何鍵組合。

  注意:如果KeyPreview屬性被設置為True,則一個窗體先于該窗體上的控件接收到此事件。可用KeyPreview屬性來創建全局鍵盤處理例程。

  了解了以上知識,我們可以制作出非常完美而且帶有快捷鍵的程序,例如我們在一個程序中要用Ctrl+S存盤,Shift最小化,Alt+X和ESC退出:

  首先啟動vb選擇新建EXE文件,在Form1窗體上拉一個TextBox,并把Form1的KeyPreview屬性設為True,雙擊Form1,選擇Form的KeyPress事件,輸入如下代碼:   Private Sub Form_KeyPress(KeyAscii as Integer) 'Esc鍵退出,VbEscape可以用27代替   If KeyAscii=VbEscape then End   End Sub   在Form的KeyDown事件中輸入如下代碼:   Private Sub Form_KeyDown(KeyCode as Integer,Shift as Integer) '處理Ctrl+X,Shift,Alt+X   If Shift=2 And KeyCode=VbKeyS Then Print#FileNum,Form1.Text1.Text 'Ctrl+S存盤,VbKeyS=83   If shift=2 then Form1.WindowState=1 'Shift最小化   If Shift=4 And KeyCode=VbKeyX Then End 'Alt+X退出,VbkeyX=88   End Sub   在Form的Load事件中輸入如下代碼:   Private Sub Form_load()   Dim FileNum as integer   FileNum=FreeFile   Open App.Path+"Sample.txt" For Append As#FileNum   End Sub
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91精品国产乱码久久久久久久久 | 欧美日韩精品一区二区三区不卡 | 一级做a爰片性色毛片2021 | 久久免费视频5 | 国产亚洲精品综合一区91 | 99久久电影 | 美女喷水网站 | 国产午夜精品在线 | 欧美大穴 | 欧美黄色一级片在线观看 | 一级黄色欧美 | 一级黄色电影网站 | 久久精品高清 | 污视频在线免费 | 成人三区四区 | 国产精品一区视频 | 国产精品一区二区三区99 | 黄色的视频免费看 | 在线a毛片 | 竹内纱里奈和大战黑人 | 午夜视频中文字幕 | 国产成人精品无人区一区 | 一级在线观看视频 | 91综合在线观看 | av电影网站在线 | 欧美h版电影在线观看 | 黄色大片免费网站 | 中文字幕在线成人 | 国产艳妇av视国产精选av一区 | 渔夫荒淫艳史 | 免费看操片 | 久久精品亚洲一区 | 在线1区| 精品小视频 | 久久精品一区二区三 | 精品国产一区二区三区在线观看 | 久久精品国产亚洲7777小说 | 91小视频在线观看免费版高清 | 国产女同玩人妖 | 亚洲性在线视频 | 九九热九九爱 |