国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

VB.NET鼠標手勢實現技巧分享

開發 后端
VB.NET鼠標手勢的實現方法將會在這篇文章中詳細給出。初學者可以通過這篇文章介紹的內容對這一應用技巧有一個充分的掌握。

VB.NET可以幫助我們實現許多以前比較難已實現的功能。比如在鼠標手勢的實現方面,就可以使用這一語言輕松的實現。下面就為大家詳細介紹一下這方面的應用技巧,希望能給大家帶來一些幫助。

1.什么是鼠標手勢:

我的理解,按著鼠標某鍵(一般是右鍵)移動鼠標,然后放開某鍵,程序會識別你的移動軌跡,做出相應的響應.

 2.VB.NET鼠標手勢實現原理:

首先說明一下,我在網上沒有找到相關的文檔,我的方法未必與其他人是一致的,實際效果感覺還可以.
鼠標移動的軌跡我們可以將其看成是許多小段直線組成的,然后這些直線的方向就是鼠標在這段軌跡中的方向了. 

 3.VB.NET鼠標手勢實現代碼:

還要說明一下,

a)要捕獲鼠標的移動事件,可以使用vb中的mousemove事件,但這個會受到一些限制(例如,在webbrowser控件上就沒有這個事件).于是這個例子中,我用win api,在程序中安裝個鼠標鉤子,這樣就能夠捕獲整個程序的鼠標事件了.

b)這個里只是個能捕獲鼠標向上,下,左,右的移動的例子.(呵呵,其實這四方向一般也足夠了:))

新建Standrad EXE,添加一個Module

form1的代碼如下

 

  1. Option Explicit   
  2. Private Sub Form_Load()   
  3. Call InstallMouseHook   
  4. End Sub   
  5. Private Sub Form_QueryUnload
    (Cancel As Integer, 
    UnloadMode As Integer)   
  6. Call UninstallMouseHook   
  7. End Sub  

 

#p#

Module1的代碼如下

 

  1. Option Explicit   
  2. Public Const HTCLIENT As Long = 1   
  3. Private hMouseHook As Long   
  4. Private Const KF_UP As Long = &H80000000   
  5. Public Declare Sub CopyMemory Lib "kernel32"
     Alias "RtlMoveMemory" (hpvDest As Any,
     hpvSource As Any, ByVal cbCopy As Long)   
  6. Private Type POINTAPI   
  7. X As Long   
  8. Y As Long   
  9. End Type   
  10. Public Type MOUSEHOOKSTRUCT   
  11. pt As POINTAPI   
  12. hwnd As Long   
  13. wHitTestCode As Long   
  14. dwExtraInfo As Long   
  15. End Type   
  16. Public Declare Function CallNextHookEx
     Lib "user32" _   
  17. (ByVal hHook As Long, _   
  18. ByVal ncode As Long, _   
  19. ByVal wParam As Long, _   
  20. ByVal lParam As Long) As Long   
  21. Public Declare Function 
    SetWindowsHookEx Lib "user32" _   
  22. Alias "SetWindowsHookExA" _   
  23. (ByVal idHook As Long, _   
  24. ByVal lpfn As Long, _   
  25. ByVal hmod As Long, _   
  26. ByVal dwThreadId As Long) As Long   
  27. Public Declare Function UnhookWindows
    HookEx Lib "user32" _   
  28. (ByVal hHook As Long) As Long   
  29. Public Const WH_KEYBOARD As Long = 2   
  30. Public Const WH_MOUSE As Long = 7   
  31. Public Const HC_SYSMODALOFF = 5   
  32. Public Const HC_SYSMODALON = 4   
  33. Public Const HC_SKIP = 2   
  34. Public Const HC_GETNEXT = 1   
  35. Public Const HC_ACTION = 0   
  36. Public Const HC_NOREMOVE As Long = 3   
  37. Public Const WM_LBUTTONDBLCLK As Long = &H203   
  38. Public Const WM_LBUTTONDOWN As Long = &H201   
  39. Public Const WM_LBUTTONUP As Long = &H202   
  40. Public Const WM_MBUTTONDBLCLK As Long = &H209   
  41. Public Const WM_MBUTTONDOWN As Long = &H207   
  42. Public Const WM_MBUTTONUP As Long = &H208   
  43. Public Const WM_RBUTTONDBLCLK As Long = &H206   
  44. Public Const WM_RBUTTONDOWN As Long = &H204   
  45. Public Const WM_RBUTTONUP As Long = &H205   
  46. Public Const WM_MOUSEMOVE As Long = &H200   
  47. Public Const WM_MOUSEWHEEL As Long = &H20A   
  48. Public Declare Function PostMessage Lib 
    "user32" Alias "PostMessageA" (ByVal hwnd 
    As Long, ByVal wMsg As Long, ByVal wParam 
    As Long, ByVal lParam As Long) As Long   
  49. Public Const MK_RBUTTON As Long = &H2   
  50. Public Declare Function ScreenToClient 
    Lib "user32" (ByVal hwnd As Long, lpPoint
     As POINTAPI) As Long   
  51. Public Declare Function GetAsyncKeyState 
    Lib "user32" (ByVal vKey As Long) As Integer   
  52. Public Const VK_LBUTTON As Long = &H1   
  53. Public Const VK_RBUTTON As Long = &H2   
  54. Public Const VK_MBUTTON As Long = &H4   
  55. Dim mPt As POINTAPI   
  56. Const ptGap As Single = 5 * 5   
  57. Dim preDir As Long   
  58. Dim mouseEventDsp As String   
  59. Dim eventLength As Long   
  60. '######### mouse hook #############   
  61. Public Sub InstallMouseHook()   
  62. hMouseHook = SetWindowsHookEx(WH_MOUSE, 
    AddressOf MouseHookProc, _   
  63. App.hInstance, App.ThreadID)   
  64. End Sub   
  65. Public Function MouseHookProc(ByVal iCode 
    As Long, ByVal wParam As Long, ByVal 
    lParam As Long) As Long   
  66. Dim Cancel As Boolean   
  67. Cancel = False   
  68. On Error GoTo due   
  69. Dim i&   
  70. Dim nMouseInfo As MOUSEHOOKSTRUCT   
  71. Dim tHWindowFromPoint As Long   
  72. Dim tpt As POINTAPI   
  73. If iCode = HC_ACTION Then   
  74. CopyMemory nMouseInfo, ByVal lParam, 
    Len(nMouseInfo)   
  75. tpt = nMouseInfo.pt   
  76. ScreenToClient nMouseInfo.hwnd, tpt   
  77. 'Debug.Print tpt.X, tpt.Y   
  78. If nMouseInfo.wHitTestCode = 1 Then   
  79. Select Case wParam   
  80. Case WM_RBUTTONDOWN   
  81. mPt = nMouseInfo.pt   
  82. preDir = -1   
  83. mouseEventDsp = ""   
  84. Cancel = True   
  85. Case WM_RBUTTONUP   
  86. Debug.Print mouseEventDsp   
  87. Cancel = True   
  88. Case WM_MOUSEMOVE   
  89. If vkPress(VK_RBUTTON) Then   
  90. Call GetMouseEvent(nMouseInfo.pt)   
  91. End If   
  92. End Select   
  93. End If   
  94. End If   
  95. If Cancel Then   
  96. MouseHookProc = 1   
  97. Else   
  98. MouseHookProc = CallNextHookEx(hMouseHook,
     iCode, wParam, lParam)   
  99. End If   
  100. Exit Function   
  101. due:   
  102. End Function   
  103. Public Sub UninstallMouseHook()   
  104. If hMouseHook <> 0 Then   
  105. Call UnhookWindowsHookEx(hMouseHook)   
  106. End If   
  107. hMouseHook = 0   
  108. End Sub   
  109. Public Function vkPress(vkcode As Long) As Boolean   
  110. If (GetAsyncKeyState(vkcode) And &H8000) <> 0 Then   
  111. vkPress = True   
  112. Else   
  113. vkPress = False   
  114. End If   
  115. End Function   
  116. Public Function GetMouseEvent(nPt As POINTAPI) As Long   
  117. Dim cx&, cy&   
  118. Dim rtn&   
  119. rtn = -1   
  120. cx = nPt.X - mPt.X: cy = -(nPt.Y - mPt.Y)   
  121. If cx * cx + cy * cy > ptGap Then   
  122. If cx > 0 And Abs(cy) <= cx Then   
  123. rtn = 0   
  124. ElseIf cy > 0 And Abs(cx) <= cy Then   
  125. rtn = 1   
  126. ElseIf cx < 0 And Abs(cy) <= Abs(cx) Then   
  127. rtn = 2   
  128. ElseIf cy < 0 And Abs(cx) <= Abs(cy) Then   
  129. rtn = 3   
  130. End If   
  131. mPt = nPt   
  132. If preDir <> rtn Then   
  133. mouseEventDspmouseEventDsp = mouseEventDsp
     & DebugDir(rtn)   
  134. preDir = rtn   
  135. End If   
  136. End If   
  137. GetMouseEvent = rtn   
  138. End Function   
  139. Public Function DebugDir(nDir&) As String   
  140. Dim tStr$   
  141. Select Case nDir   
  142. Case 0   
  143. tStr = "右"   
  144. Case 1   
  145. tStr = "上"   
  146. Case 2   
  147. tStr = "左"   
  148. Case 3   
  149. tStr = "下"   
  150. Case Else   
  151. tStr = "無"   
  152. End Select   
  153. Debug.Print Timer, tStr   
  154. DebugDir = tStr   
  155. End Function  

 

運行VB.NET鼠標手勢的程序后,在程序窗口上,按著右鍵移動鼠標,Immediate Window就會顯示出鼠標移動的軌跡了.

責任編輯:曹凱 來源: 編程入門網
相關推薦

2010-01-18 16:33:57

VB.NET加密文件

2010-01-07 13:40:50

VB.NET讀取XML

2010-01-14 16:04:32

VB.NET顯示時間

2010-01-18 10:26:19

VB.NET中心旋轉圖

2010-01-18 16:41:47

VB.NET用戶登錄頁

2010-01-15 19:04:09

2010-01-22 11:02:30

VB.NET創建新變量

2010-01-13 15:52:59

VB.NET浮動窗體

2010-01-22 13:16:05

VB.NET初始化數組

2010-01-13 16:45:44

VB.NET刪除控件

2010-01-11 15:31:04

VB.NET拖動窗體

2010-01-08 18:31:45

VB.NET歷史菜單

2010-01-22 16:27:19

VB.NET關于對話框

2010-01-15 19:24:42

2010-01-19 15:30:44

VB.NET比較運算符

2010-01-13 10:25:30

VB.NET文件夾操作

2010-01-11 16:04:10

VB.NET使用wit

2010-01-07 10:02:53

Flash控制VB.N

2010-01-13 14:41:18

VB.NET列出目錄內

2010-01-18 19:36:52

VB.NET調整控件
點贊
收藏

51CTO技術棧公眾號

久久久久久国产精品免费无遮挡| 粉嫩在线一区二区三区视频| 欧美激情视频网站| 无遮挡动作视频在线观看免费入口| 久久99精品国产91久久来源| 亚洲一区二区在线播放| 亚洲欧洲专区| 91麻豆精品国产91久久久更新时间 | 91吃瓜在线观看| 国产视频一区在线观看| 欧美一进一出视频| 国产一区二区三区91| 久久这里只有精品视频首页| 成人一区二区不卡免费| 久久精品国产一区二区三区免费看| 亚洲综合成人婷婷小说| 国产另类xxxxhd高清| 国产成人精品三级麻豆| 久久精品99久久香蕉国产色戒| 亚洲一区3d动漫同人无遮挡| 香蕉久久夜色精品| 精品国产一区二区三区在线| 国产激情一区二区三区四区| 黑人巨大精品欧美一区二区奶水| 在线观看一区不卡| 欧美粗大gay| 热门国产精品亚洲第一区在线| 亚洲在线免费| 啊啊啊啊啊啊啊视频在线播放| 欧美一区二区三区色| 国产人妖一区| 国产综合久久久久| 亚洲特色特黄| 欧美日韩国产精品自在自线| 狠狠久久综合婷婷不卡| www.8ⅹ8ⅹ羞羞漫画在线看| 老司机免费视频久久| 欧美成人精品在线视频| 欧美一区二区少妇| 日韩av不卡一区二区| x99av成人免费| 亚洲第一导航| 在线中文免费视频| 亚洲片区在线| 欧美日韩中文字幕精品| 99久久国产免费免费| www.在线观看av| 成人bbav| 91丨porny丨户外露出| 欧美精品久久久久久久久| 黄网站在线观看| 亚洲国产精品高清| 国产精品yjizz| 日本黄网站免费| av在线最新| 成人高清视频在线| 97精品伊人久久久大香线蕉| 中文字幕在线中文字幕日亚韩一区| 日韩母乳在线| 国产精品国产三级国产普通话99| 欧美极品少妇xxxxⅹ喷水| 毛片视频免费观看| 亚洲毛片播放| 欧美成人中文字幕| 亚洲精品视频99| www国产精品av| 亚洲在线色站| 欧美国产美女| 欧美色图在线视频| 99热一区二区三区| 国产丝袜精品丝袜| 国产原创一区二区| 91精品国产综合久久久久久久久久 | 欧美亚洲禁片免费| 国产精品草莓在线免费观看| 欧美xxxxxxxxx59| 香蕉综合视频| 这里只有精品久久| 1069男同网址| 真实原创一区二区影院| 中文字幕 久热精品 视频在线| 日韩av在线网址| 黄网站免费入口| 蜜桃传媒麻豆第一区在线观看| 欧美激情综合色综合啪啪五月| 国产免费a∨片在线观看不卡| 久久在线91| 中文国产成人精品久久一| 国产高潮av| 你懂的国产精品| 欧美理论电影在线| 正在播放一区| 99香蕉久久| 亚洲成人你懂的| 久久99999| 亚洲国产午夜| 一区二区三区短视频| 日韩av一区二区三区美女毛片| 最新黄网在线观看| 国产精品高潮久久久久无| 制服国产精品| 日韩久久电影| 亚洲国产高清自拍| 91福利免费在线| 国产精品美女| 热久久99这里有精品| 国产免费久久精品| 久久一区二区三区超碰国产精品| 欧美13一14另类| 岛国av在线一区| 69中国xxxxxxxxx69| 色综合久久综合| 欧美momandson| 欧美综合第一页| 国产毛片久久| 精品无码国产一区二区三区av| 亚洲天堂中文字幕| www555久久| 91影院未满十八岁禁止入内| 加勒比日本影视| 高清电影一区| 国产精品一区二区三区在线播放 | 日本欧美中文字幕| 国产在线播放一区| 深夜福利在线视频| 日韩免费一区二区三区在线播放| 国产精品香蕉| a级黄色片免费| 欧美成人艳星乳罩| 在线综合亚洲| 成人好色电影| 国产精品老牛影院在线观看| 久久综合九色综合欧美98 | 中文字幕欧美日韩一区| 中文字幕日产av一二三区| 精品久久久久久久久久久久久久久| 欧美爱爱网站| 日本a级片在线播放| 从欧美一区二区三区| 窝窝九色成人影院| 欧美一级高清片| 最新亚洲精品| 日韩精品福利片午夜免费观看| 亚洲www啪成人一区二区麻豆| 精品久久久网| 日韩精品久久久毛片一区二区| 亚洲视频在线观看一区| 在线观看精品| 欧美午夜精品久久久久免费视| 亚洲一区二区三区四区五区黄 | 国产精品久久久久一区二区三区 | 亚洲成人一二三| 日韩精品一区二区三区中文 | 国产ts一区二区| 久久久久久久久岛国免费| 精品精品导航| 95av在线视频| 亚洲欧美另类在线| www 久久久| 青青草综合视频| 欧美精品精品一区| 欧美在线亚洲综合一区| 午夜成在线www| 欧美高清视频一区二区| 成人在线一区二区三区| 国产不卡人人| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 欧美性猛交一区二区三区精品| 水蜜桃精品av一区二区| 国产污污在线观看| 国产精品高潮呻吟久久av黑人| 亚洲国产成人一区二区三区| 麻豆精品在线| 国产极品美女高潮无套久久久| 中文字幕日韩av| 成人黄色在线看| 久久青草免费| 欧美视频第一区| 久久久噜噜噜久久久| 中文字幕一区二区三| 婷婷精品在线观看| 美女的尿口免费视频| 国产成人精品一区| 亚洲大片在线观看| 亚洲中无吗在线| 午夜激情在线观看| 激情小说综合区| 日韩视频一区二区三区| 日本不卡一区二区| 在线成人av观看| 成人av在线播放观看| 亚洲午夜性刺激影院| 九一九一国产精品| 欧美一区二区少妇| 欧美精品xxx| 精品成人一区| h网站在线播放| 国产精品久久视频| 日本一二三不卡| 中文在线资源|