精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

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-14 16:04:32

VB.NET顯示時間

2010-01-18 16:41:47

VB.NET用戶登錄頁

2010-01-18 10:26:19

VB.NET中心旋轉圖

2010-01-07 13:40:50

VB.NET讀取XML

2010-01-13 15:52:59

VB.NET浮動窗體

2010-01-22 11:02:30

VB.NET創建新變量

2010-01-15 19:04:09

2010-01-22 13:16:05

VB.NET初始化數組

2010-01-11 15:31:04

VB.NET拖動窗體

2010-01-13 16:45:44

VB.NET刪除控件

2010-01-08 18:31:45

VB.NET歷史菜單

2010-01-07 10:02:53

Flash控制VB.N

2010-01-22 16:27:19

VB.NET關于對話框

2010-01-13 10:25:30

VB.NET文件夾操作

2010-01-15 19:24:42

2010-01-19 15:30:44

VB.NET比較運算符

2010-01-11 16:04:10

VB.NET使用wit

2010-01-08 18:37:08

VB.NET顯示圖片

2010-01-13 14:41:18

VB.NET列出目錄內
點贊
收藏

51CTO技術棧公眾號

久久精品99国产精| 亚洲最大成人在线观看| 日韩一区二区三区不卡| 性欧美videos另类喷潮| 视频在线观看一区二区| 亚洲国产欧美日韩在线| 亚洲人体视频| 亚洲欧美日韩国产一区二区三区| 国产日韩三区| 亚洲怡红院av| 黑人一区二区三区四区五区| 亚洲人成电影网站色…| 肉色超薄丝袜脚交| 亚洲美女尤物影院| 伊人婷婷欧美激情| 欧美日韩无遮挡| 性欧美videos另类hd| 爽爽淫人综合网网站| 欧美高清不卡在线| 91制片厂在线| 国产一区二区区别| 日韩精品专区在线影院重磅| 久久久久免费精品| 91精品国产黑色瑜伽裤| 欧美高清一级片在线观看| 国产精品免费一区二区三区四区| 在线视频 中文字幕| 亚洲毛片视频| 欧美伦理91i| 免费成人深夜蜜桃视频 | 91精品在线国产| 九九精品免费视频| 亚洲无线视频| 久久久成人的性感天堂| 久久丫精品忘忧草西安产品| 九九热hot精品视频在线播放| 制服丝袜日韩国产| 日本a√在线观看| 成人短视频app| 精品久久久视频| www精品久久| 在线āv视频| 亚洲欧美一区二区三区国产精品| 天天综合狠狠精品| 黄色毛片在线观看| 久久影视一区二区| 精品久久久久久一区| 国内精品久久久久久久久久| 国产做a爰片久久毛片| 国产精品女主播视频| 久久久久精彩视频| 日本中文字幕一区二区视频 | 日韩欧美国产另类| 性欧美长视频| 日本欧美在线视频| 欧美一区二区三区不卡视频| 亚洲视频播放| 日本精品久久久久影院| 中文字幕在线看人| 久久国产直播| 国产精品福利无圣光在线一区| 在线观看 亚洲| 巨乳诱惑日韩免费av| 国产成人精品日本亚洲 | 91精品婷婷国产综合久久性色| 亚洲天堂伊人网| 成人在线啊v| 精品免费99久久| 久久久久久久人妻无码中文字幕爆| 91久久精品无嫩草影院| 精品国产百合女同互慰| 人妻激情偷乱频一区二区三区| 国内精品麻豆美女在线播放视频| 亚洲精品美女久久久久| 国精产品一区一区三区免费视频 | 国产激情91久久精品导航| 97操在线视频| 亚洲日本香蕉视频| 国产三级欧美三级| 成年人黄色在线观看| www红色一片_亚洲成a人片在线观看_| 一个色综合av| 国产亚洲精品网站| 国产精品久久久久久久久久齐齐| 4438x亚洲最大成人网| 伊人av在线播放| 日韩欧美ww| 日韩中文字幕网| 精品深夜av无码一区二区老年| 亚洲永久免费精品| 国产精品一区=区| 亚洲男人天堂久久| 久久久久国产精品麻豆ai换脸| 亚洲啪啪av| 欧美家庭影院| 欧美性猛交xxxxxxxx| 无码国产精品一区二区高潮| 先锋影音国产精品| 久久亚洲精品中文字幕冲田杏梨| 亚洲黄色一区二区| 久热成人在线视频| 久久99精品久久久久久青青日本 | 亚洲伦理在线观看| 国产视频911| 久久久久久免费看| 婷婷激情成人| 亚洲精品在线91| 四虎永久免费在线| 日韩**一区毛片| 久久99国产精品| 欧美精品videosex| 欧美日韩一区不卡| 丰满少妇在线观看资源站| 91成人精品| 日韩美女在线看| 刘亦菲毛片一区二区三区| 国产精品女主播在线观看| 久久久久久久久久久99| 国产激情精品一区二区三区| 国产亚洲一级高清| 亚洲精品视频在线观看免费视频| 韩国成人精品a∨在线观看| 免费国产一区二区| 丁香花在线电影| 日韩一区二区三区视频在线| 黄色免费一级视频| 久久久久综合| 久久99精品久久久久子伦| 在线黄色网页| 9191久久久久久久久久久| 国产成人一区二区在线观看| 亚洲免费综合| 久久艳妇乳肉豪妇荡乳av| 里番在线播放| 日韩欧美一级二级三级久久久| 少妇愉情理伦三级| 日韩在线一区二区三区| 欧美一级爱爱| 在线天堂资源| 亚洲欧美另类中文字幕| 亚洲黄色一区二区| 99精品在线观看视频| 国产日本在线播放| 一区二区三区视频播放| 欧美另类交人妖| 精品国产一级片| 一区二区三区精品| 佐佐木明希电影| 亚洲欧美亚洲| 成人三级在线| 成人黄色动漫| 国产视频精品一区二区三区| youjizz在线视频| 久久青草欧美一区二区三区| 无遮挡又爽又刺激的视频| 亚洲第一论坛sis| 国产精品久久久久久久久久东京| 二人午夜免费观看在线视频| 欧美亚洲禁片免费| 国产3级在线观看| 国产尤物一区二区在线| 老司机午夜网站| 荡女精品导航| 欧洲永久精品大片ww免费漫画| 蝌蚪视频在线播放| 欧美色偷偷大香| 欧美在线视频第一页| 国产精品白丝jk白祙喷水网站| 欧美一区二区视频在线播放| 国产在线播放精品| 国产精品9999| 九义人在线观看完整免费版电视剧| 欧美一级高清大全免费观看| 国产第100页| 久久久久久久久免费| 亚洲老女人av| 午夜久久福利| 欧美精品一区二区三区四区五区| 美女视频一区| 欧美激情在线播放| 国产黄在线播放| 91精品国产高清一区二区三区蜜臀 | 污视频在线免费| 欧美网站大全在线观看| 国产精品免费人成网站酒店 | 91精品黄色片免费大全| 久久精品免费在线| 国产亚洲欧美一区在线观看| 在线观看免费视频污| 在线播放日韩| 亚洲区一区二区三区| 久久影视三级福利片| 国产精品久久久久久av下载红粉| 污污片在线免费视频| 亚洲人成网站777色婷婷| 国产99视频在线| 色视频欧美一区二区三区| 国产色无码精品视频国产| 成人精品国产免费网站| 国产又粗又长又大的视频| 一区在线免费观看| 亚洲一区二区精品在线| 日韩系列在线| 国产欧美高清视频在线| 欧美理论片在线观看| 黄网站在线观看| 欧美tickling挠脚心丨vk| 中文字幕观看在线| 亚洲国产欧美在线| 精品一区二区在线观看视频| 91偷拍与自偷拍精品| 992kp免费看片| 另类小说一区二区三区| 欧美激情成人网| 激情久久久久久久| 天天干天天色天天爽| 精品免费在线| 久久www免费人成精品| 日韩精品一区二区三区中文| 国产欧美日韩视频| 日本电影欧美片| 91av视频在线免费观看| 影院在线观看全集免费观看| 中文字幕精品一区二区精品| 婷婷亚洲一区二区三区| 日韩精品一区二区在线观看| 国产一区二区自拍视频| 色先锋久久av资源部| 久久久久久久久久久久久av| 亚洲第一激情av| 久久精品99久久久久久| 亚洲欧美乱综合| 欧美美女性生活视频| 国产精品麻豆欧美日韩ww| 天堂久久精品忘忧草| 久久久久久一二三区| 久久国产精品影院| 99久久久无码国产精品| 青青草视频网站| 成人激情校园春色| 在线免费看黄色片| 成人丝袜18视频在线观看| 91成人在线观看喷潮蘑菇| 国产精品一区二区久久不卡 | 91网址在线看| 国产精品久久无码| 91丨porny丨首页| 熟女少妇一区二区三区| 久久综合九色综合欧美亚洲| 最新中文字幕视频| 国产欧美日韩激情| 久久日免费视频| 精品久久ai| 777午夜精品免费视频| 老熟妇一区二区三区| 欧美在线你懂的| 怡红院男人天堂| 69av一区二区三区| 亚洲欧美高清视频| 亚洲黄色在线看| 美女欧美视频在线观看免费| 国产亚洲精品激情久久| 日本三级在线播放完整版| 久久国产视频网站| 波多野结依一区| 国产91露脸中文字幕在线| 78精品国产综合久久香蕉| 成人午夜在线观看| 一区二区三区高清在线观看| 狠狠干一区二区| 欧美色图国产精品| 91精品一区二区三区四区| 伊人久久亚洲美女图片| 无码人妻丰满熟妇区毛片18| 日韩不卡一区二区三区 | 丁香六月综合激情| 亚洲中文字幕无码av| 久久精品免视看| 国产精品久久久精品四季影院| 亚洲大片精品永久免费| 国产成人麻豆免费观看| 欧美一区二区三区免费| 天天干免费视频| 中国日韩欧美久久久久久久久 | 欧美国产视频一区二区| 午夜影视一区二区三区| 国产精品视频在线观看| 亚洲一区二区三区日本久久九| 久久久神马电影| 久久久久久久久久久9不雅视频| 老太脱裤子让老头玩xxxxx| 免费人成网站在线观看欧美高清| 337p日本欧洲亚洲大胆张筱雨| 久久婷婷国产综合精品青草| 韩国精品久久久999| 一级毛片视频在线观看| 久久久久亚洲精品成人网小说| 日本精品另类| 精品不卡在线| 中文在线播放一区二区| 国产熟人av一二三区| 国产成人无遮挡在线视频| 熟女少妇内射日韩亚洲| 午夜精品久久久久久不卡8050| 怡春院在线视频| 亚洲嫩模很污视频| 好吊日av在线| 成人性生交大片免费观看嘿嘿视频| 男男gay无套免费视频欧美| 99中文字幕在线观看| 免费在线视频一区| 国产制服丝袜在线| 一区二区三区不卡在线观看 | 美女精品一区| 中文字幕第九页| 亚洲精品国产第一综合99久久 | 久久99久久99| 欧美做受xxxxxⅹ性视频| 午夜视频在线观看一区二区三区| 国产美女自慰在线观看| 中文字幕日韩综合av| 欧美magnet| 久久99久久精品国产| 欧美特黄一区| 成人免费播放视频| 国产精品久久三| 中文字幕你懂的| 在线中文字幕日韩| 日本欧美日韩| 欧美二区三区| 亚洲在线观看| 一区二区黄色片| 色综合久久久久网| 日产精品久久久久久久性色| 久久青草福利网站| eeuss国产一区二区三区四区| 日韩人妻一区二区三区蜜桃视频| 黑人精品欧美一区二区蜜桃 | 欧洲成人av| 欧美亚洲国产视频小说| 日韩欧美国产大片| 欧美日韩在线中文| 91麻豆免费看| 国产免费一级视频| 亚洲日韩中文字幕| 精品日韩视频| 一区二区三区我不卡| 美女看a上一区| 免费中文字幕日韩| 日韩一区二区三区视频在线 | 亚洲v在线观看| 亚洲国产成人av网| 人人妻人人玩人人澡人人爽| 久久久在线视频| 精品一区在线| 天天干天天综合| 亚洲精品视频在线观看免费| av天堂一区二区三区| 欧美精品videosex牲欧美| 久久九九热re6这里有精品| 波多野结衣50连登视频| 国产欧美日本一区视频| 97人妻人人澡人人爽人人精品| 欧美噜噜久久久xxx| 麻豆精品少妇| 日本999视频| 亚洲精品自拍动漫在线| 欧美一级免费片| 国产成人精品久久二区二区91| 日韩在线高清| 中国特级黄色大片| 色先锋aa成人| 中文字幕有码在线观看| 精品国产福利| 免费观看成人鲁鲁鲁鲁鲁视频| 日本青青草视频| 亚洲精品一区二区在线| 成人精品国产| 2018日日夜夜| 中文字幕国产一区| www.av导航| 国产成人小视频在线观看| 欧美在线1区| 精品国产av无码| 日韩午夜在线观看视频| 欧美羞羞视频| 成人在线观看毛片| 久久久不卡网国产精品一区| 国产人妖在线播放| 91av视频在线播放| 91不卡在线观看| 在线观看日本中文字幕| 欧美va亚洲va国产综合| 91精品国产经典在线观看| 亚洲一区三区电影在线观看| av在线一区二区三区| 91久久精品国产91性色69| 欧美综合一区第一页| 欧美日韩一区二区三区四区在线观看 | 久久久www成人免费精品|