全面讲解实现VB.NET全局热键

今天在玩游戏的时候突然有个想法,想想可以用VB.NET全局热键可以实现,现在就看看文章吧。想要一个热键功能~习惯了使用热键...我想想也是...于是就上网找了找VB全局热键的写法... 一看才知道VB.NET全局热键都很占资源大都用DO~LOOP来监视.不喜欢.于是在查阅一些关于GetWindowLong与HotKey的资料后半抄半写的情况下写了以下程序.全局键盘热键。

#T#有统计表明,很大一部分程序缺陷和内存的错误访问有关。正是因为指针直接和内存打交道,所以指针一直以来被看成一个危险的东西。以至于不少语言,如著名的 JAVA,都不提供对指针操作的支持,所有的内存访问方面的处理都由编译器来完成。而象C和C++,指针的使用则是基本功,指针给了程序员极大的自由去随心所欲地处理内存访问,很多非常巧妙的东西都要依靠指针技术来完成。

新建立一个FORM~

 
 
  1. Private Sub Form_Load()
  2. Dim ret As Long
  3. preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
  4. ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf Wndproc)
  5. idHotKey = 1
  6. Modifiers = MOD_ALT + MOD_CONTROL
  7. uVirtKey = vbKeyA
  8. ret = RegisterHotKey(Me.hwnd, idHotKey, Modifiers, uVirtKey)
  9. End Sub
  10. Private Sub Form_Unload(Cancel As Integer)
  11. Dim ret As Long
  12. ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
  13. Call UnregisterHotKey(Me.hwnd, uVirtKey)
  14. End Sub

新建立一个模块

 
 
  1. Option Explicit
  2. Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  3. Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
  4. Declare Function CallWindowProc Lib "User32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  5. Declare Function RegisterHotKey Lib "User32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
  6. Declare Function UnregisterHotKey Lib "User32" (ByVal hwnd As Long, ByVal id As Long) As Long
  7. Public Const WM_HOTKEY = &H312
  8. Public Const MOD_ALT = &H1
  9. Public Const MOD_CONTROL = &H2
  10. Public Const MOD_SHIFT = &H4
  11. Public Const GWL_WNDPROC = (-4)
  12. Public preWinProc As Long
  13. Public Modifiers As Long, uVirtKey As Long, idHotKey As Long
  14. Private Type taLong
  15. ll As Long
  16. End Type
  17. Private Type t2Int
  18. lWord As Integer
  19. hWord As Integer
  20. End Type
  21. Public Function Wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  22. If Msg = WM_HOTKEY Then
  23. If wParam = idHotKey Then
  24. Dim lp As taLong, i2 As t2Int
  25. lp.ll = lParam
  26. LSet i2 = lp
  27. If (i2.lWord = Modifiers) And i2.hWord = uVirtKey Then
  28. msgbox "你按下了热键哦~"
  29. End If
  30. End If
  31. End If
  32. Wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
  33. End Function 

网页题目:全面讲解实现VB.NET全局热键
本文网址:http://www.csdahua.cn/qtweb/news31/328681.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网