• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây !!!

Các bài viết hướng dẫn, giúp các bạn hiểu và tiếp cận với Visual Basic nhanh hơn
Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây !!!

Gửi bàigửi bởi truongphu » T.Tư 14/05/2008 10:23 am

Tên bài viết: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây !!!
Tác giả: gửi bởi T7 vào ngày Chủ nhật 02/09/2007 8:20 pm
Cấp độ bài viết: Chưa đánh giá
Tóm tắt: Copy từ Diễn đàn cũ


Lúc trước em cũng đã nghĩ là hook trong vb6 thì không thể được, vd như khi ta tạo một hook bàn phím xác định phím nhấn thì nó chỉ xác định được trong form mà thôi, hay xác định chuột đang click cũng chỉ xác định được khi click trong form. Vậy nên, ta phải sử dụng một thư viện hổ trợ hook viết bằng ngôn ngữ C hoặc C++, hay làm theo kiểu bỏ hàm xác định phím nhấn vào một timer - cách này làm chương trình tốn nhiều tài nguyên hơn , may thay em đã tìm được cách hook trong VB6, thật ra nó rất đơn giản:

Ví dụ 1: Xác định phím được nhấn
Trong project của mình, tạo một module và thêm đoạn code này vào:

Mã: Chọn hết

  1. Option Explicit
  2. Public hKbdHook As Long
  3. Private Const WH_KEYBOARD_LL As Integer = 13
  4. Private Const HC_ACTION As Integer = 0
  5. Private Const WM_KEYDOWN As Long = &H100
  6. Private Const WM_KEYUP As Long = &H101
  7.  
  8.  
  9. Private Type KBDLLHOOKSTRUCT
  10.     vkCode As Integer
  11.     scanCode As Integer
  12.     flags As Integer
  13.     time As Integer
  14.     dwExtraInfo As Integer
  15.     End Type
  16.  
  17.  
  18. Private 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
  19.  
  20.  
  21. Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
  22.  
  23.  
  24. Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  25.  
  26.  
  27. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  28.  
  29.  
  30. Private Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Integer
  31.  
  32.     Dim kbdllhs As KBDLLHOOKSTRUCT
  33.     CopyMemory kbdllhs, ByVal lParam, Len(kbdllhs)
  34.  
  35.  
  36.     If nCode = HC_ACTION Then
  37.         LowLevelKeyboardProc = CallNextHookEx(hKbdHook, nCode, wParam, lParam)
  38.  
  39.  
  40.         Select Case wParam
  41.             Case WM_KEYDOWN
  42.                 frmMain.Caption = kbdllhs.vkCode & " --- " & Chr(kbdllhs.vkCode)
  43.             Case WM_KEYUP
  44.         End Select
  45.  
  46. Else: LowLevelKeyboardProc = CallNextHookEx(hKbdHook, nCode, wParam, lParam)
  47. End If
  48.  
  49. End Function
  50.  
  51.  
  52. Sub Main()
  53.     hKbdHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0&)
  54.     If hKbdHook = 0 Then
  55.         MsgBox "Initialisation of keyboard hook failed.", vbCritical, "Keyboard Hook"
  56.         Exit Sub
  57.     End If
  58.     frmMain.Show
  59. End Sub

Tiếp theo, tạo một form tên "frmMain" và thêm đoạn code bên dưới đây vào

Mã: Chọn hết

  1. Option Explicit
  2.  
  3. Private Sub Form_Unload(Cancel As Integer)
  4.     Call UnhookWindowsHookEx(hKbdHook)
  5. End Sub

Cuối cùng, vào "Project" => <Tên Project> + "Propeties...". Chọn Startup Object là "Sub Main",... Xong, bây giờ chạy project vừa tạo rồi vào bất cứ đâu, gõ bất cứ phím gì, sau đó xem lại caption của form frmMain nhé

Tiếp theo...

Ví dụ 2: Tạo phím tắt cho chương trình
Nếu đã nắm rõ cách thức hoạt động của ct được tạo ra ở ví dụ 1 trên đây thì ở ví dụ này bạn sẽ không khó khăn để biết cách thức hoạt động của nó bởi đoạn mã cũng gần như ví dụ trên

Trong project, tạo một module và thêm đoạn code này vào:

Mã: Chọn hết

  1. Option Explicit
  2. Public hKbdHook As Long
  3. Private Const WH_KEYBOARD_LL As Integer = 13
  4. Private Const HC_ACTION As Integer = 0
  5. Private Const WM_KEYDOWN As Long = &H100
  6. Private Const WM_KEYUP As Long = &H101
  7.  
  8.  
  9. Private Type KBDLLHOOKSTRUCT
  10.     vkCode As Integer
  11.     scanCode As Integer
  12.     flags As Integer
  13.     time As Integer
  14.     dwExtraInfo As Integer
  15. End Type
  16.  
  17. Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
  18.  
  19.  
  20. Private 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
  21.  
  22.  
  23. Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
  24.  
  25.  
  26. Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  27.  
  28.  
  29. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  30.  
  31.  
  32. Private Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Integer
  33.  
  34.     Dim kbdllhs As KBDLLHOOKSTRUCT
  35.     CopyMemory kbdllhs, ByVal lParam, Len(kbdllhs)
  36.  
  37.  
  38.     If nCode = HC_ACTION Then
  39.         LowLevelKeyboardProc = CallNextHookEx(hKbdHook, nCode, wParam, lParam)
  40.  
  41.  
  42.         Select Case wParam
  43.             Case WM_KEYDOWN
  44.                  If (GetKeyState(vbKeyControl) And &HF0000000) And kbdllhs.vkCode = Asc("Q") Then Unload frmMain
  45.             Case WM_KEYUP
  46.         End Select
  47.  
  48. Else: LowLevelKeyboardProc = CallNextHookEx(hKbdHook, nCode, wParam, lParam)
  49. End If
  50.  
  51. End Function
  52.  
  53.  
  54. Sub Main()
  55.     hKbdHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0&)
  56.     If hKbdHook = 0 Then
  57.         MsgBox "Initialisation of keyboard hook failed.", vbCritical, "Keyboard Hook"
  58.         Exit Sub
  59.     End If
  60.     frmMain.Show
  61. End Sub

Tiếp theo, tạo một form tên "frmMain" và thêm đoạn code bên dưới đây vào

Mã: Chọn hết

  1. Option Explicit
  2.        
  3.       Private Sub Form_Unload(Cancel As Integer)
  4.           Call UnhookWindowsHookEx(hKbdHook)
  5.       End Sub

Cuối cùng, như ví dụ 1: vào "Project" => <Tên Project> + "Propeties...". Chọn Startup Object là "Sub Main",... Ok, bây giờ hãy chạy ct vừa tạo, vào bất cứ đâu và nhấn Ctrl + Q, lập tức, chương trình sẽ đóng ngay

Đây là một cách giúp khóa bàn phím lại bằng hook (không làm gì được luôn , ngoại trừ cách gọi Task Manager ) và cũng có thể gọi đây là một cách "phá máy"

Giống như trên, đầu tiên ta tạo một module và thêm đoạn code dưới vào

Mã: Chọn hết

  1. Option Explicit
  2. Public hKbdHook As Long
  3. Private Const WH_KEYBOARD_LL As Integer = 13
  4. Private Const HC_ACTION As Integer = 0
  5. Private Const WM_KEYDOWN As Long = &H100
  6. Private Const WM_KEYUP As Long = &H101
  7.  
  8.  
  9. Private Type KBDLLHOOKSTRUCT
  10.     vkCode As Integer
  11.     scanCode As Integer
  12.     flags As Integer
  13.     time As Integer
  14.     dwExtraInfo As Integer
  15.     End Type
  16.  
  17.  
  18. Private 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
  19.  
  20.  
  21. Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
  22.  
  23.  
  24. Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  25.  
  26.  
  27. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  28.  
  29.  
  30. Private Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Integer
  31.  
  32.     Dim kbdllhs As KBDLLHOOKSTRUCT
  33.     CopyMemory kbdllhs, ByVal lParam, Len(kbdllhs)
  34.  
  35.  
  36.     If nCode = HC_ACTION Then
  37.         LowLevelKeyboardProc = CallNextHookEx(hKbdHook, nCode, wParam, lParam)
  38.  
  39.  
  40.         Select Case wParam
  41.             Case WM_KEYDOWN
  42.                 LowLevelKeyboardProc = -1
  43.             Case WM_KEYUP
  44.         End Select
  45.  
  46. Else: LowLevelKeyboardProc = CallNextHookEx(hKbdHook, nCode, wParam, lParam)
  47. End If
  48.  
  49. End Function
  50.  
  51.  
  52. Sub Main()
  53.     hKbdHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0&)
  54.     If hKbdHook = 0 Then
  55.         MsgBox "Initialisation of keyboard hook failed.", vbCritical, "Keyboard Hook"
  56.         Exit Sub
  57.     End If
  58.     frmMain.Show
  59. End Sub

Ok, giờ tạo một form tên frmMain và thêm đoạn code này vào

Mã: Chọn hết

  1. Option Explicit
  2.  
  3. Private Sub Form_Unload(Cancel As Integer)
  4.     Call UnhookWindowsHookEx(hKbdHook)
  5. End Sub

Rồi, như thường lệ , vào "Project" => <Tên Project> + "Propeties...". Chọn Startup Object là "Sub Main",... Xong, he he, bây giờ thử nhấn bất cứ phím gì đi , đảm bảo nhấn banh bàn phím luôn cũng không có gì xảy ra với máy đâu (miễn đừng gọi Task Manager là được
Lưu ý: Khi hook để khóa bàn phím thì nên cẩn thận, thoát đúng quy cách (thoát bằng cách click vô nút đóng bên phải trên cửa sổ để nó đóng câu lện hook lại, nếu không thì... Bàn phím sẽ bị khóa lại cho tới khi bạn tắt ct trong task manager (còn nếu đang chạy thử trong VB6 thì không sao, thoát ra khỏi VB6 là được)
Em xin tiếp tục giới thiệu với mọi người cách hook tiếp theo, cách hook chuột !!!
Đầu tiên ta tạo một Project, tạo một module và thêm đoạn code dưới vào

Mã: Chọn hết

  1. Public hHook As Long
  2.  
  3. Public 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
  4.  
  5. Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
  6.  
  7. Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
  8.  
  9. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  10.  
  11. Public Const WM_RBUTTONDBLCLK = &H206
  12. Public Const WM_RBUTTONDOWN = &H204
  13. Public Const WM_RBUTTONUP = &H205
  14. Public Const WM_MOUSEMOVE = &H200
  15. Public Const WM_LBUTTONDBLCLK = &H203
  16. Public Const WM_LBUTTONDOWN = &H201
  17. Public Const WM_LBUTTONUP = &H202
  18. Private Const HC_ACTION As Integer = 0
  19.  
  20. Public Type POINTAPI
  21.     X As Long
  22.     Y As Long
  23. End Type
  24. Public Type EVENTMSG
  25.         message As Long
  26.         paramL As Long
  27.         paramH As Long
  28.         Time As Long
  29.         hwnd As Long
  30. End Type
  31. Public Type MEvent
  32.     X As Long
  33.     Y As Long
  34.     Time As Long
  35.     Click As Long
  36. End Type
  37.  
  38.  
  39.  
  40. Sub Main()
  41.     frmMain.Show
  42.     hHook = SetWindowsHookEx(WH_MOUSE, AddressOf HookProc, App.hInstance, 0&)
  43.     If hHook = 0 Then
  44.         MsgBox "Error !!!", vbCritical
  45.     End If
  46. End Sub
  47.  
  48. Public Function HookProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  49.  
  50.     If nCode = HC_ACTION Then
  51.         Dim hookMsg As EVENTMSG
  52.         HookProc = CallNextHookEx(hHook, nCode, wParam, lParam)
  53.         Call CopyMemory(hookMsg, ByVal lParam, Len(hookMsg))
  54.         Select Case hookMsg.message
  55.             Case WM_MOUSEMOVE
  56.                 frmMain.Caption = hookMsg.paramL & ":" & hookMsg.paramH
  57.             Case WM_LBUTTONDOWN
  58.                 frmMain.Caption = "LEFT BUTTON DOWN"
  59.             Case WM_RBUTTONDOWN
  60.                 frmMain.Caption = "RIGHT BUTTON DOWN"
  61.             Case WM_LBUTTONUP
  62.                 frmMain.Caption = "LEFT BUTTON UP"
  63.             Case WM_RBUTTONUP
  64.                 frmMain.Caption = "RIGHT BUTTON UP"
  65.         End Select
  66.     Else: HookProc = CallNextHookEx(hHook, nCode, wParam, lParam)
  67.     End If
  68. End Function

Xong, sửa cái tên của form1 lại thành frmMain và tiếp tục thêm đoạn code này vô

Mã: Chọn hết

  1. Private Sub Form_Unload(Cancel As Integer)
  2.     If hHook <> 0 Then Call UnhookWindowsHookEx(hHook)
  3. End Sub

Rồi, như thường lệ , vào "Project" => <Tên Project> + "Propeties...". Chọn Startup Object là "Sub Main" => Xong rùi, cứ chạy thử chương trình đi, di chuyển chuột và click vài cái để xem sự thây đổi trên tiêu đề của form frmMain nhé


o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Có thể Hook đồng thời Mouse và Keystore hay không?

Gửi bàigửi bởi truongphu » T.Tư 02/12/2009 1:25 pm

Thủ thuật: Có thể Hook đồng thời Mouse và Keystore hay không?
Tác giả: sendmessage">sendmessage
Mô tả: Có thể Hook đồng thời Mouse và Keystore hay không?



In Module

Mã: Chọn hết

  1. '* The SetWindowsHookEx function installs an application-defined hook procedure into a hook chain. You would install a hook procedure to monitor the system for certain types of events. These events are associated either with a specific thread or with all threads in the system.
  2. Public 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
  3. '* The UnhookWindowsHookEx function removes a hook procedure installed in a hook chain by the SetWindowsHookEx function.
  4. Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
  5. '* The CallNextHookEx function passes the hook information to the next hook procedure in the current hook chain. A hook procedure can call this function either before or after processing the hook information.
  6. Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
  7. '* The CopyMemory function copies a block of memory from one location to another.
  8. Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  9.  
  10. '* Type to hold the mouse coordinates
  11. Private Type POINTAPI
  12.     X As Long
  13.     Y As Long
  14. End Type
  15.  
  16. '******************************************************
  17. '* System messages for Mouse that we want to trace
  18. Private Const WM_MOUSEMOVE           As Long = &H200
  19. Private Const WM_MOUSEWHEEL          As Long = &H20A
  20. Private Const WM_LBUTTONDOWN         As Long = &H201
  21. Private Const WM_LBUTTONUP           As Long = &H202
  22. Private Const WM_RBUTTONDOWN         As Long = &H204
  23. Private Const WM_RBUTTONUP           As Long = &H205
  24. Private Const WM_MBUTTONDOWN         As Long = &H207
  25. Private Const WM_MBUTTONUP           As Long = &H208
  26. '******************************************************
  27.  
  28. '******************************************************
  29. '* System messages foe Keyboard that we want to trace
  30. Private Const WM_KEYDOWN As Long = &H100
  31. Private Const WM_KEYUP As Long = &H101
  32. '******************************************************
  33.  
  34. '* System hook for mouse that we'll use
  35. Public Const WH_MOUSE_LL           As Long = 14
  36. Global lKeyboardHook               As Long
  37. '* System hook for Keyboard that we'll use
  38. Public Const WH_KEYBOARD_LL        As Long = 13
  39. Global lMouseHook                  As Long
  40.  
  41.  
  42. Public Const HC_ACTION = 0
  43.  
  44. '* Type to hold Mouse Hook information
  45. Private Type MOUSELLHOOKSTRUCT
  46.     point As POINTAPI
  47.     data As Long
  48.     flags As Long
  49.     time As Long
  50.     extra As Long
  51. End Type
  52.  
  53. '* Type to hold Keyboard Hook information
  54. Private Type KBDLLHOOKSTRUCT
  55.     vkCode As Integer
  56.     scanCode As Integer
  57.     flags As Integer
  58.     time As Integer
  59.     dwExtraInfo As Integer
  60. End Type
  61.  
  62. Private mousedata As MOUSELLHOOKSTRUCT
  63. Private keyboarddata As KBDLLHOOKSTRUCT
  64.  
  65. Public Function MouseProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  66.     If (nCode = HC_ACTION) Then
  67.         ' Mouse data not used in this example, but useful
  68.         CopyMemory mousedata, ByVal lParam, Len(mousedata)
  69.         Select Case wParam
  70.             Case WM_MOUSEMOVE
  71.                 Form1.Cls
  72.                 Form1.Print "Mouse(" & mousedata.point.X & "," & mousedata.point.Y & ")"
  73.             Case WM_MOUSEWHEEL
  74.                 Form1.Cls
  75.                 Form1.Print "Wheel(" & mousedata.point.X & "," & mousedata.point.Y & ")"
  76.             Case WM_LBUTTONDOWN
  77.                
  78.             Case WM_LBUTTONUP
  79.                
  80.             Case WM_RBUTTONDOWN
  81.                
  82.             Case WM_RBUTTONUP
  83.                
  84.             Case WM_MBUTTONDOWN
  85.                
  86.             Case WM_MBUTTONUP
  87.                
  88.             Case Else
  89.                 ' not implemented yet
  90.         End Select
  91.     End If
  92.     MouseProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
  93. End Function
  94.  
  95. Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Integer
  96.     If nCode = HC_ACTION Then
  97.         CopyMemory keyboarddata, ByVal lParam, Len(keyboarddata)
  98.         Select Case wParam
  99.             Case WM_KEYDOWN
  100.                 Form1.Cls
  101.                 Form1.Print "KeyDown: " & keyboarddata.vkCode
  102.                
  103.             Case WM_KEYUP
  104.                 Form1.Cls
  105.                 Form1.Print "KeyUp: " & keyboarddata.vkCode
  106.            
  107.         End Select
  108.     End If
  109.     KeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
  110. End Function
  111.  


In Form1

Mã: Chọn hết

  1. Private Sub Form_Load()
  2.     lMouseHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MouseProc, App.hInstance, 0)
  3.     lKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf KeyboardProc, App.hInstance, 0)
  4. End Sub
  5.  
  6. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  7.     UnhookWindowsHookEx lMouseHook
  8.     UnhookWindowsHookEx lKeyboardHook
  9. End Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

nhokstart
Thành viên chính thức
Thành viên chính thức
Bài viết: 38
Ngày tham gia: T.Tư 13/04/2011 9:42 am
Has thanked: 1 time
Been thanked: 2 time
Liên hệ:

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây

Gửi bàigửi bởi nhokstart » T.Tư 18/05/2011 12:05 am

mục này k thấy ai nói j đến hết chắt là k biết j hết. em cũng vậy nhưng rất cảm ơn pac đã giúp em hiểu thêm 1 ít.

haluwen9
Bài viết: 9
Ngày tham gia: T.Tư 25/07/2012 9:03 am
Has thanked: 1 time

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây

Gửi bàigửi bởi haluwen9 » T.Tư 25/07/2012 3:35 pm

tuy đọc nhìu khó hiểu, nhưng từ từ mò mẫm, kiếm thêm tài liệu thì sẽ giỏi hơn được nhỉ
Thanks

Hình đại diện của người dùng
01632911829
Thành viên chính thức
Thành viên chính thức
Bài viết: 42
Ngày tham gia: T.Bảy 11/08/2012 12:50 pm
Đến từ: Bình Thuận
Has thanked: 4 time
Been thanked: 2 time
Liên hệ:

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây

Gửi bàigửi bởi 01632911829 » CN 30/12/2012 1:01 pm

Hay! Làm và coi code là hiểu.

lsqk
Bài viết: 7
Ngày tham gia: T.Ba 19/11/2013 9:13 am
Has thanked: 29 time

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây

Gửi bàigửi bởi lsqk » T.Sáu 30/05/2014 2:45 pm

Cảm ơn bác rất nhiều, em cần nghiên cứu cái này để viết bộ gõ chữ Hán.

Hong Hai
Bài viết: 8
Ngày tham gia: CN 08/06/2014 11:14 am

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây

Gửi bàigửi bởi Hong Hai » T.Sáu 04/07/2014 9:55 pm

Xin chào các anh chị em. Nhờ code của bác truongphu mình viết được bộ gõ cho mình rồi. Nhưng hiện tại mình phải dùng clipboard để đưa những chữ của mình vào ứng dụng. Các bạn có cách nào không dùng clipboard được không, giống như Unikey vậy đó. Xin cám ơn các bạn.
Bình thường, mình muốn gọi 1 ký tự không có trên bàn phím, thì nhấn nút Alt + mã Unicode của nó.
VD:chữ "á": Alt+0225 (phím số bên keypad)
Mình dùng keybd_event để gởi tổ hợp phím đó:
- Trong MS word thì OK
- Trong wordPad thì cũng được nhưng có tiếng "Beep" kèm theo
- Trong Corel thì 1 loạt tiếng "Beep" nhưng không chữ nào vào.
- Trong Illustracter thì nó bay vào luôn số 0225
Mong các bạn góp ý giúp. Xin cám ơn các bạn.

Hong Hai
Bài viết: 8
Ngày tham gia: CN 08/06/2014 11:14 am

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây

Gửi bàigửi bởi Hong Hai » T.Ba 15/07/2014 11:59 pm

Các bạn giúp mình đi, chỉ hướng cho mình suy nghĩ cũng được, hay cho mình xin tài liệu có liên quan cũng được. Xin cám ơn!

Hình đại diện của người dùng
phanthequang4101987
Thành viên danh dự
Thành viên danh dự
Bài viết: 116
Ngày tham gia: T.Ba 01/04/2008 6:39 am
Đến từ: Nghi Xuân - Hà Tĩnh
Has thanked: 5 time
Been thanked: 21 time
Liên hệ:

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây

Gửi bàigửi bởi phanthequang4101987 » T.Tư 16/07/2014 8:06 am

bạn vào mục "mã nguồn"/tiện ích tải bộ gõ VBkey của bác thanhtuyen về mà xem có nguyên cả bộ gõ như unikey (mình đã test trên win7 và win8 32 bít chạy ngon)
viewtopic.php?f=33&t=13876
†™_Çøø£_™†.......♥.......†™_U††»ñhøç_™†
Đưa người ta chưa đưa qua sông
mà sao nghe tiếng sóng trong lòng
.(¯`v´¯)_______ÎÎ_____ÎÎ________(¯`v´¯)

Hong Hai
Bài viết: 8
Ngày tham gia: CN 08/06/2014 11:14 am

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây

Gửi bàigửi bởi Hong Hai » T.Tư 16/07/2014 9:51 pm

Cám ơn bạn (phanthequang4101987) đã quan tâm, mình có xem qua chương trình này rồi. Và cũng nhờ những bài viết hướng dẫn và phân tích của bạn ấy mà mình biết chút chút.
Vấn đề của mình là làm sao gởi tổ hợp phím Alt+Numpad đến Notepad, Corel, Illus... mà không bị lỗi.
Hơn nữa, phần mềm bạn ấy vẫn dùng clipboard trong một số chương trình.

ko0ls92
Bài viết: 1
Ngày tham gia: T.Bảy 01/11/2014 7:17 pm

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây

Gửi bàigửi bởi ko0ls92 » T.Bảy 01/11/2014 7:26 pm

bạn ơi mình viết bằng vb 2012 thì nó báo lỗi ở App.hInstance thì phải sửa thế nào?

Hình đại diện của người dùng
HaiVB6
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 375
Ngày tham gia: T.Hai 03/02/2014 10:23 pm
Đến từ: [Gia Đông] - [Thuận Thành] - [Bắc Ninh]
Has thanked: 5 time
Been thanked: 14 time
Liên hệ:

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây

Gửi bàigửi bởi HaiVB6 » T.Bảy 01/11/2014 10:31 pm

@ko0ls92: Đây là VB6 bạn nhớ! :)

Hong Hai
Bài viết: 8
Ngày tham gia: CN 08/06/2014 11:14 am

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây !!!

Gửi bàigửi bởi Hong Hai » T.Tư 08/07/2015 4:27 pm

Xin chào các anh em. Cho mình hỏi cái nầy nhe: Khi hook chuột và bàn phím được rồi, làm sao để khi mình nhấn Shift + chuột phải trên một chương trình khác nó không xổ xuống Popup menu phụ của chương trình đó. ví dụ giống như chương trình English Study 3.0. Xin cảm ơn nhiều

Hong Hai
Bài viết: 8
Ngày tham gia: CN 08/06/2014 11:14 am

Re: Cách HOOK chuột và bàn phím toàn hệ thống trong VB6 đây !!!

Gửi bàigửi bởi Hong Hai » T.Bảy 11/07/2015 3:46 pm

Bạn "truongphu" ơi cho mình xin ý kiến giúp đỡ đi.


Quay về “[VB] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách