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

全面解析VB.NET HOOK功能

開發 后端
這里給大家介紹了VB.NET HOOK功能,hHook是Hook函數的句柄本函數的作用是將當前Hook鏈中的Hook信息傳遞給下一個Hook。

在網上收集了大量的資料,但是這里還是不對原理進行分析,我們只是就調用VB.NET HOOK功能,以及vb.net中API使用的變化問題。由于VB.NET HOOK功能較多,本文中以最常用的鍵盤Hook為例進行分析。

#T#先來看一下在vb中是如何實現的。截的是空格鍵。表現的目標是:一個form,上面有一個textbox,不管焦點是否落在textbox里,按空格鍵,不會在textbox中輸入一個空格,而是變成在textbox中寫入一句話:“HOOK成功!”

1.在一個Module中寫入下列代碼

調用的API的申明:

  1. Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" 
    (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long 

函數說明:本函數是用于啟動Hook設置。

idHook是Hook的類型,即處理的消息類型。

Lpfn是Hook子程(函數或過程)的地址指針。如果dwThreadId參數為0或是一個由別的進程創建的線程的標識,lpfn必須指向DLL中的Hook子程。除此以外,lpfn可以指向當前進程的一段Hook子程代碼(我們利用的就是這個性質)。

hMod是應用程序實例的句柄,標識包含lpfn所指的子程的DLL。如果dwThreadId 標識當前進程創建的一個線程,而且子程代碼位于當前進程,hMod必須為NULL。dwThreadId是與安裝Hook子程相關聯的線程的標識符,如果為0,Hook子程與所有的線程關聯。 返回值:函數成功則返回Hook子程的句柄,失敗返回NULL。

  1. Declare Function UnHookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long 

函數說明: 本函數是解除Hook之用。hHook是Hook函數的句柄。

  1. Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long 

函數說明:本函數的作用是將當前Hook鏈中的Hook信息傳遞給下一個Hook。
hHook是當前Hook的句柄,一個應用程序接收這個句柄,作為先前調用SetWindowsHookEx函數的結果。
nCode指的是傳遞到當前Hook過程的Hook代碼,下一個Hook過程使用這段代碼去決定如何處理Hook信息。
wParam指傳遞給當前Hook過程的wParam值,它的具體含義是由當前Hook鏈中的相關Hook的類型決定的。
lParam指傳遞給當前Hook過程的lParam值,它的具體含義是由當前Hook鏈中的相關Hook的類型決定的。

2. 定義的常量是

  1. Public hnextHookproc As Long  
  2. Public Const WH_KEYBOARD = 2 ‘這個是表明Hook的種類是鍵盤Hook  
  3. Public Const PM_KEY_SPACE = &H20 ‘空格鍵 

3.VB.NET HOOK功能代碼段

  1. Public Sub UnHookKBD()‘解鍵盤HOOK函數  
  2. If hnextHookproc <> 0 Then  
  3. UnHookWindowsHookEx hnextHookproc  
  4. hnextHookproc = 0 
  5. End If  
  6. End Sub  
  7. Public Function EnableKBDHook() ‘設置鍵盤HOOK  
  8. If hnextHookproc <> 0 Then  
  9. Exit Function  
  10. End If  
  11. hnextHookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf _  
  12. MyKBHFunc, App.hInstance, 0)  
  13. If hnextHookproc <> 0 Then  
  14. EnableKBDHook = hnextHookproc 
  15. End If  
  16. End Function  
  17. Public Function MyKBHFunc(ByVal iCode As Long, _  
  18. ByVal wParam As Long, ByVal lParam As Long) As Long  
  19. MyKBHFunc = 0 
  20. If iCode < 0 Then  
  21. MyKBHFunc = CallNextHookEx(hnextHookproc, iCode, wParam, lParam)  
  22. Exit Function  
  23. End If  
  24. If wParam = PM_KEY_SPACE Then ''偵測 有沒有按到空格鍵  
  25. MyKBHFunc = 1 
  26. ‘加入自己的代碼,用于表明響應  
  27. form1.text1.text=”Hook成功!”  
  28. End If  
  29. End Function 

4.在Form中的代碼很簡單

  1. Private Sub Form_Load()  
  2. Call EnableKBDHook  
  3. End Sub  
  4. Private Sub Form_Unload(Cancel As Integer)  
  5. Call UnHookKBD  
  6. End Sub   
責任編輯:田樹 來源: 博客
相關推薦

2009-10-28 10:04:53

VB.NET XmlW

2009-10-28 17:44:31

VB.NET語言

2009-11-04 10:54:53

VB.NET MOVE

2009-10-15 10:57:16

VB.NET Text

2009-10-29 15:16:02

VB.NET文件傳送

2009-10-14 15:20:21

VB.NET窗體指針

2009-11-02 15:57:36

VB.NET WEB

2009-10-15 11:42:05

VB.Net賦值語句

2009-11-10 16:46:52

VB.NET指針應用

2009-10-20 14:09:05

VB.NET反射功能

2009-10-09 15:59:41

VB.NET對象

2009-10-27 09:45:03

VB.NET數組

2009-10-15 17:50:48

VB.NET調用API

2009-10-20 17:38:20

VB.NET exce

2009-11-10 16:20:25

VB.NET全局熱鍵

2009-10-29 11:26:28

VB.NET調用Web

2010-01-13 09:45:53

VB.NET Arra

2010-01-21 16:37:56

VB.NET變量聲明

2010-01-14 17:41:57

VB.NET變量范圍

2010-01-12 10:48:54

VB.NET LIST
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 激情视频中文字幕 | 久久精品国产亚洲一区二区三区 | 国产成人精品网站 | 国产小视频在线观看 | 欧美日韩成人在线 | 成人免费看黄 | 九九热在线免费视频 | 天天干天天玩天天操 | 99视频| 欧美xxxⅹ性欧美大片 | 精品一区二区三区在线观看国产 | 男人的天堂avav | 91久久国产综合久久91精品网站 | 日日骚av | 日韩欧美一区二区三区免费看 | 九九热九九 | 伊人青青久久 | 日韩欧美一区二区三区 | 欧美黄色网 | 99亚洲| 国产精品免费一区二区三区四区 | 日韩视频 中文字幕 | 成年女人免费v片 | 精品视频一区二区三区 | 亚洲精品专区 | 免费精品在线视频 | 99reav| 国产成人在线视频 | www.亚洲一区二区三区 | 精品粉嫩aⅴ一区二区三区四区 | 欧美999| 99pao成人国产永久免费视频 | 黄视频网址 | 狠狠做深爱婷婷综合一区 | 欧美v在线 | 91网站视频在线观看 | 亚洲视频免费在线观看 | av网址在线播放 | 亚洲一区在线日韩在线深爱 | 欧美成人精品激情在线观看 | 精品久久香蕉国产线看观看亚洲 |