狂点的我有 .form Option Explicit Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long Dim NNum As Long Private Const WM_LBUTTONDOWN = &H201 Private Const WM_LBUTTONUP = &H202 Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Private Sub Form_Click() Unload Me End SubPrivate Sub Form_Load() Dim ret As Long preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf Wndproc)
idHotKey = 1 Modifiers = 0& 'MOD_CONTROL uVirtKey = vbKeySpace ret = RegisterHotKey(Me.hwnd, idHotKey, Modifiers, uVirtKey) End SubPrivate Sub Form_Unload(Cancel As Integer) Dim ret As Long ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc) Call UnregisterHotKey(Me.hwnd, uVirtKey) End SubPrivate Sub Timer1_Timer() 'On Error Resume Next Dim ret As Long
ret = SendMessage(MouseDC.MDC, WM_LBUTTONDOWN, 0&, 0&) ret = SendMessage(MouseDC.MDC, WM_LBUTTONUP, 0&, 0&) ret = SendMessage(MouseDC.MDC, WM_LBUTTONDOWN, 0&, 0&) ret = SendMessage(MouseDC.MDC, WM_LBUTTONUP, 0&, 0&)End SubPrivate Sub Timer2_Timer() NNum = NNum + 1 Dim ret As Long ret = Beep(45, 100) Timer1.Enabled = False Timer2.Enabled = False End Sub
Hook.Bas Option ExplicitDeclare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long 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 Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As LongPublic Const WM_HOTKEY = &H312 Public Const MOD_ALT = &H1 Public Const MOD_CONTROL = &H2 Public Const MOD_SHIFT = &H4 Public Const GWL_WNDPROC = (-4)Public preWinProc As Long Public Modifiers As Long, uVirtKey As Long, idHotKey As LongPrivate Type taLong ll As Long End TypePrivate Type t2Int lWord As Integer hWord As Integer End Type Dim iii Public Function Wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_HOTKEY Then If wParam = idHotKey Then Dim lp As taLong, i2 As t2Int lp.ll = lParam LSet i2 = lp If (i2.lWord = Modifiers) And i2.hWord = uVirtKey Then iii = iii + 1 If iii Mod 2 = 1 Then
Form1.Timer1.Interval = 1000 / CLng(Form1.Text1.Text) Form1.Timer1.Enabled = True Form1.Timer2.Enabled = True Else Form1.Timer1.Enabled = False Form1.Timer2.Enabled = False End If
'****************** End If End If End If Wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function
MouseDC.bas Option ExplicitPublic Declare Function WindowFromPoint Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPublic Type POINTAPI X As Long Y As Long End TypePublic Type DGfor3 ponX As Long ponY As Long MDC As Long End TypePublic Function MouseDC() As DGfor3 On Error Resume Next Dim Cur As POINTAPI GetCursorPos Cur MouseDC.MDC = WindowFromPoint(Cur.X, Cur.Y) MouseDC.ponX = Cur.X MouseDC.ponY = Cur.Y End Function
.form
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
Dim NNum As Long
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Private Sub Form_Click()
Unload Me
End SubPrivate Sub Form_Load()
Dim ret As Long
preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf Wndproc)
idHotKey = 1
Modifiers = 0& 'MOD_CONTROL
uVirtKey = vbKeySpace
ret = RegisterHotKey(Me.hwnd, idHotKey, Modifiers, uVirtKey)
End SubPrivate Sub Form_Unload(Cancel As Integer)
Dim ret As Long
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
Call UnregisterHotKey(Me.hwnd, uVirtKey)
End SubPrivate Sub Timer1_Timer()
'On Error Resume Next
Dim ret As Long
ret = SendMessage(MouseDC.MDC, WM_LBUTTONDOWN, 0&, 0&)
ret = SendMessage(MouseDC.MDC, WM_LBUTTONUP, 0&, 0&)
ret = SendMessage(MouseDC.MDC, WM_LBUTTONDOWN, 0&, 0&)
ret = SendMessage(MouseDC.MDC, WM_LBUTTONUP, 0&, 0&)End SubPrivate Sub Timer2_Timer()
NNum = NNum + 1
Dim ret As Long
ret = Beep(45, 100)
Timer1.Enabled = False
Timer2.Enabled = False
End Sub
Option ExplicitDeclare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
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
Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As LongPublic Const WM_HOTKEY = &H312
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4
Public Const GWL_WNDPROC = (-4)Public preWinProc As Long
Public Modifiers As Long, uVirtKey As Long, idHotKey As LongPrivate Type taLong
ll As Long
End TypePrivate Type t2Int
lWord As Integer
hWord As Integer
End Type
Dim iii
Public Function Wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_HOTKEY Then
If wParam = idHotKey Then
Dim lp As taLong, i2 As t2Int
lp.ll = lParam
LSet i2 = lp
If (i2.lWord = Modifiers) And i2.hWord = uVirtKey Then
iii = iii + 1
If iii Mod 2 = 1 Then
Form1.Timer1.Interval = 1000 / CLng(Form1.Text1.Text)
Form1.Timer1.Enabled = True
Form1.Timer2.Enabled = True
Else
Form1.Timer1.Enabled = False
Form1.Timer2.Enabled = False
End If
'******************
End If
End If
End If
Wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function
Option ExplicitPublic Declare Function WindowFromPoint Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPublic Type POINTAPI
X As Long
Y As Long
End TypePublic Type DGfor3
ponX As Long
ponY As Long
MDC As Long
End TypePublic Function MouseDC() As DGfor3
On Error Resume Next
Dim Cur As POINTAPI
GetCursorPos Cur
MouseDC.MDC = WindowFromPoint(Cur.X, Cur.Y)
MouseDC.ponX = Cur.X
MouseDC.ponY = Cur.Y
End Function