小弟在VBNote處看到此段程式碼,但使用後.... 只能在Windows底下有作用.... 進入遊戲後卻無效><"
如果想要讓他再遊戲中有作用是不是應該修改些什麼ㄋ? 望各位大大不吝賜教^^
'-----------------------------------------------------------------------------------------------
' 以下程式在Form中
' 需要1個Timer,1個Command,一個TextBox
'-----------------------------------------------------------------------------------------------
Option Explicit
Private Sub Command1_Click()
Timer1.Interval = Text1.Text '設定時間
End Sub
Private Sub Form_Load()
Timer1.Interval = 300 '預設間格為0.3秒
Timer1.Enabled = False
Text1.Text = Timer1.Interval
Command1.Caption = "更改連點時間"
'設定啟動熱鍵為Ctrl+1
lShift1 = vbKeyControl '組合鍵1
lHotKeyBegin = vbKey1 '按鍵1
'設定結束熱鍵為A+2
lShift2 = vbKeyA '組合鍵2
lHotKeyEnd = vbKey2 '按鍵2
Call StratHook '啟動Hook
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call EndHook '關閉Hook
End Sub
Private Sub Timer1_Timer()
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 '按下左鍵
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 '按下右鍵
End Sub

--------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------
' 以下程式在模組
'----------------------------------------------------------------------------------------------------
Option Explicit
Type EVENTMSG
message As Long
    paramL As Long
    paramH As Long
    time As Long
    hwnd As Long
End Type
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
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public hHook As Long, lHotKeyBegin As Long, lHotKeyEnd As Long, lShift1 As Long, lShift2 As Long
Public bShift1 As Boolean, bShift2 As Boolean
Public Const HC_ACTION = 0
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Const MOUSEEVENTF_MIDDLEDOWN = &H20
Public Const MOUSEEVENTF_MIDDLEUP = &H40
Public Const MOUSEEVENTF_RIGHTDOWN = &H8
Public Const MOUSEEVENTF_RIGHTUP = &H10
Sub StratHook()
hHook = SetWindowsHookEx(0, AddressOf HookProc, App.hInstance, 0)
End Sub
Sub EndHook()
Call UnhookWindowsHookEx(hHook)
End Sub
Function HookProc(ByVal code As Long, ByVal wParam As Long, lParam As EVENTMSG) As Long
If lParam.message = WM_KEYDOWN Then
If (lParam.paramL And &HFF) = lHotKeyBegin And bShift1 Then
  '如果按下熱鍵1 啟動滑鼠連點
    Form1.Caption = "啟動滑鼠連點"
    Form1.Timer1.Enabled = True
  ElseIf (lParam.paramL And &HFF) = lHotKeyEnd And bShift2 Then
  '如果按下熱鍵2 關閉滑鼠連點
    Form1.Caption = "關閉滑鼠連點"
    Form1.Timer1.Enabled = False
  End If
  If (lParam.paramL And &HFF) = lShift1 Then '如果按下組合鍵1
    bShift1 = True
  End If
  If (lParam.paramL And &HFF) = lShift2 Then '如果按下組合鍵2
    bShift2 = True
  End If
  Debug.Print lParam.paramL And &HFF
ElseIf lParam.message = WM_KEYUP Then
If (lParam.paramL And &HFF) = lShift1 Then '如果放開組合鍵1
    bShift1 = False
  End If
  If (lParam.paramL And &HFF) = lShift2 Then '如果放開組合鍵2
    bShift2 = False
  End If
End If
HookProc = CallNextHookEx(hHook, code, wParam, lParam)
End Function
文件出處
Honey
arrow
arrow
    全站熱搜

    vbqa 發表在 痞客邦 留言(0) 人氣()