日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
全面解析VB.NETHOOK功能

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

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

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

調(diào)用的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

函數(shù)說明:本函數(shù)是用于啟動Hook設置。

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

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

hMod是應用程序?qū)嵗木浔?,標識包含lpfn所指的子程的DLL。如果dwThreadId 標識當前進程創(chuàng)建的一個線程,而且子程代碼位于當前進程,hMod必須為NULL。dwThreadId是與安裝Hook子程相關聯(lián)的線程的標識符,如果為0,Hook子程與所有的線程關聯(lián)。 返回值:函數(shù)成功則返回Hook子程的句柄,失敗返回NULL。

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

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

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

函數(shù)說明:本函數(shù)的作用是將當前Hook鏈中的Hook信息傳遞給下一個Hook。
hHook是當前Hook的句柄,一個應用程序接收這個句柄,作為先前調(diào)用SetWindowsHookEx函數(shù)的結(jié)果。
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函數(shù)
  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 

當前名稱:全面解析VB.NETHOOK功能
本文來源:http://www.5511xx.com/article/dpgidpo.html