成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為你介紹什么是VB.NET虛擬碼

開發 后端
這里簡單的介紹了VB.NET虛擬碼,為了統一鍵盤上所有鍵的編碼,于是就提出了VB.NET虛擬碼概念,希望本篇文章對大家有幫助。

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

什么是VB.NET虛擬碼呢?因為掃描碼與硬件相關,不具有通用性,為了統一鍵盤上所有鍵的編碼,于是就提出了VB.NET虛擬碼概念。無論什么鍵盤,同一個按鍵的虛擬碼總是相同的,這樣程序就可以識別了。簡單點說,虛擬碼就是我們經常可以看到的像VK_A,VK_B這樣的常數,比如鍵A的虛擬碼是65,寫成16進制就是&H41,注意,人們經常用16進制來表示虛擬碼。

#T#鍵盤驅動程序把掃描碼轉換為虛擬碼后,會把這個鍵盤操作的掃描碼和虛擬碼還有其它信息一起傳遞給操作系統。然后操作系統則會把這些信息封裝在一個消息中,并把這個鍵盤消息插入到消息列隊。最后,要是不出意外的話,這個鍵盤消息最終會被送到當前的活動窗口那里,活動窗口所在的應用程序接收到這個消息后,就知道鍵盤上哪個鍵被按下,也就可以決定該作出什么響應給用戶了。這個過程可以簡單的如下表示:
用戶按下按鍵-----鍵盤驅動程序將此事件傳遞給操作系統-----操作系統將鍵盤事件插入消息隊列-----鍵盤消息被發送到當前活動窗口
明白了這個過程,我們就可以編程實現在其中的某個環節來模擬鍵盤操作了。在VB中,有多種方法可以實現鍵盤模擬,我們就介紹幾種比較典型的。

局部級模擬
從上面的流程可以看出,鍵盤事件是最終被送到活動窗口,然后才引起目標程序響應的。那么最直接的模擬方法就是:直接偽造一個鍵盤消息發給目標程序。哈哈,這實在是很簡單,windows提供了幾個這樣的API函數可以實現直接向目標程序發送消息的功能,常用的有SendMessage和 PostMessage,它們的區別是PostMessage函數直接把消息仍給目標程序就不管了,而SendMessage把消息發出去后,還要等待目標程序返回些什么東西才好。這里要注意的是,模擬鍵盤消息一定要用PostMessage函數才好,用SendMessage是不正確的(因為模擬鍵盤消息是不需要返回值的,不然目標程序會沒反應),切記切記!PostMessage函數的VB聲明如下:

  1. Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) 
    As Long 

參數hwnd 是你要發送消息的目標程序上某個控件的句柄,參數wMsg 是消息的類型,表示你要發送什么樣的消息,最后wParam 和lParam 這兩個參數是隨消息附加的數據,具體內容要由消息決定。

再來看看wMsg 這個參數,要模擬按鍵就靠這個了。鍵盤消息常用的有如下幾個:
WM_KEYDOWN     表示一個普通鍵被按下
WM_KEYUP       表示一個普通鍵被釋放
WM_SYSKEYDOWN  表示一個系統鍵被按下,比如Alt鍵
WM_SYSKEYUP    表示一個系統鍵被釋放,比如Alt鍵

責任編輯:田樹 來源: 博客
相關推薦

2009-10-28 11:13:39

VB.NET虛擬框架

2009-11-02 17:24:57

VB.NET語言

2009-11-03 10:30:47

VB.NET繼承

2009-10-28 09:55:29

VB.NET MyCl

2010-01-08 14:14:27

VB.NET使用Fin

2010-01-18 17:09:52

VB.NET創建虛擬目

2010-01-22 10:41:33

VB.NET聲明結構

2009-10-12 13:19:14

VB.NET線程同步

2009-11-10 12:42:47

VB.NET Prin

2009-11-10 10:28:20

VB.NET誕生

2010-01-07 15:25:11

VB.NET數組

2009-10-12 15:02:51

VB.NET動態控件

2010-01-21 16:45:00

VB.NET繼承規則

2009-11-02 10:42:04

VB.NET EXCE

2010-01-08 16:19:00

VB.NET類型單位命

2010-01-22 17:22:49

VB.NET事件訪問器

2010-01-07 15:49:10

VB.NET DoLoop

2010-01-19 10:03:35

VB.NET Labe

2010-01-11 14:06:14

VB.NET時間函數

2010-01-08 13:35:35

VB.NET寫Log方
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜小视频免费观看 | 国产亚洲精品一区二区三区 | 亚洲视频免费播放 | 日本福利在线观看 | 欧美激情精品久久久久久变态 | 日韩精品一区二区三区久久 | 国产视频福利在线观看 | 91免费在线视频 | 日本三级网站在线 | 鲁大师一区影视 | 99热在线观看精品 | 天天干天天色 | 精品欧美一区二区精品久久 | 久久久久久久久久久丰满 | 91在线看片| 欧美日韩免费 | 亚洲欧美视频一区 | 一区日韩 | 国产区免费视频 | 久久久蜜臀国产一区二区 | 国产视频二区 | av免费网站在线观看 | 久久不卡视频 | 成人影| 999国产视频 | 国产精品99久久久久久人 | 91se在线 | 福利视频网 | 自拍偷拍3p| 成人av一区二区三区 | 免费毛片网 | 91精品国产综合久久久久久漫画 | 国产一区影院 | 99成人免费视频 | 久久久久久国产精品免费免费男同 | 香蕉视频久久久 | 国产无人区一区二区三区 | 日韩国产欧美 | 一级欧美日韩 | 日韩欧美三级电影 | 狠狠婷婷综合久久久久久妖精 |