新聞中心
接觸過編程2年的朋友都知道,其實(shí)編程就是那么點(diǎn)事,現(xiàn)在我們就簡單的看看關(guān)于VB.NET虛擬碼的問題。當(dāng)用戶按下鍵盤上的一個(gè)鍵時(shí),鍵盤內(nèi)的芯片會檢測到這個(gè)動作,并把這個(gè)信號傳送到計(jì)算機(jī)。如何區(qū)別是哪一個(gè)鍵被按下了呢?鍵盤上的所有按鍵都有一個(gè)編碼,稱作鍵盤掃描碼。當(dāng)你按下一個(gè)鍵時(shí),這個(gè)鍵的掃描碼就被傳給系統(tǒng)。掃描碼是跟具體的硬件相關(guān)的,同一個(gè)鍵,在不同鍵盤上的掃描碼有可能不同。鍵盤控制器就是將這個(gè)掃描碼傳給計(jì)算機(jī),然后交給鍵盤驅(qū)動程序。鍵盤驅(qū)動程序會完成相關(guān)的工作,并把這個(gè)掃描碼轉(zhuǎn)換為鍵盤虛擬碼。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、玉山網(wǎng)絡(luò)推廣、微信小程序、玉山網(wǎng)絡(luò)營銷、玉山企業(yè)策劃、玉山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供玉山建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
什么是VB.NET虛擬碼呢?因?yàn)閽呙璐a與硬件相關(guān),不具有通用性,為了統(tǒng)一鍵盤上所有鍵的編碼,于是就提出了VB.NET虛擬碼概念。無論什么鍵盤,同一個(gè)按鍵的虛擬碼總是相同的,這樣程序就可以識別了。簡單點(diǎn)說,虛擬碼就是我們經(jīng)??梢钥吹降南馰K_A,VK_B這樣的常數(shù),比如鍵A的虛擬碼是65,寫成16進(jìn)制就是&H41,注意,人們經(jīng)常用16進(jìn)制來表示虛擬碼。
#T#鍵盤驅(qū)動程序把掃描碼轉(zhuǎn)換為虛擬碼后,會把這個(gè)鍵盤操作的掃描碼和虛擬碼還有其它信息一起傳遞給操作系統(tǒng)。然后操作系統(tǒng)則會把這些信息封裝在一個(gè)消息中,并把這個(gè)鍵盤消息插入到消息列隊(duì)。最后,要是不出意外的話,這個(gè)鍵盤消息最終會被送到當(dāng)前的活動窗口那里,活動窗口所在的應(yīng)用程序接收到這個(gè)消息后,就知道鍵盤上哪個(gè)鍵被按下,也就可以決定該作出什么響應(yīng)給用戶了。這個(gè)過程可以簡單的如下表示:
用戶按下按鍵-----鍵盤驅(qū)動程序?qū)⒋耸录鬟f給操作系統(tǒng)-----操作系統(tǒng)將鍵盤事件插入消息隊(duì)列-----鍵盤消息被發(fā)送到當(dāng)前活動窗口
明白了這個(gè)過程,我們就可以編程實(shí)現(xiàn)在其中的某個(gè)環(huán)節(jié)來模擬鍵盤操作了。在VB中,有多種方法可以實(shí)現(xiàn)鍵盤模擬,我們就介紹幾種比較典型的。
局部級模擬
從上面的流程可以看出,鍵盤事件是最終被送到活動窗口,然后才引起目標(biāo)程序響應(yīng)的。那么最直接的模擬方法就是:直接偽造一個(gè)鍵盤消息發(fā)給目標(biāo)程序。哈哈,這實(shí)在是很簡單,windows提供了幾個(gè)這樣的API函數(shù)可以實(shí)現(xiàn)直接向目標(biāo)程序發(fā)送消息的功能,常用的有SendMessage和 PostMessage,它們的區(qū)別是PostMessage函數(shù)直接把消息仍給目標(biāo)程序就不管了,而SendMessage把消息發(fā)出去后,還要等待目標(biāo)程序返回些什么東西才好。這里要注意的是,模擬鍵盤消息一定要用PostMessage函數(shù)才好,用SendMessage是不正確的(因?yàn)槟M鍵盤消息是不需要返回值的,不然目標(biāo)程序會沒反應(yīng)),切記切記!PostMessage函數(shù)的VB聲明如下:
- Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
As Long
參數(shù)hwnd 是你要發(fā)送消息的目標(biāo)程序上某個(gè)控件的句柄,參數(shù)wMsg 是消息的類型,表示你要發(fā)送什么樣的消息,最后wParam 和lParam 這兩個(gè)參數(shù)是隨消息附加的數(shù)據(jù),具體內(nèi)容要由消息決定。
再來看看wMsg 這個(gè)參數(shù),要模擬按鍵就靠這個(gè)了。鍵盤消息常用的有如下幾個(gè):
WM_KEYDOWN 表示一個(gè)普通鍵被按下
WM_KEYUP 表示一個(gè)普通鍵被釋放
WM_SYSKEYDOWN 表示一個(gè)系統(tǒng)鍵被按下,比如Alt鍵
WM_SYSKEYUP 表示一個(gè)系統(tǒng)鍵被釋放,比如Alt鍵
標(biāo)題名稱:為你介紹什么是VB.NET虛擬碼
分享地址:http://fisionsoft.com.cn/article/dpigdoh.html


咨詢
建站咨詢
