|
nbsp; Dim Rc As Long Rc = GetClassNameA(hWnd, StrData(0), &H100) If Rc > 0 Then ClassName = StrConv(LeftB(StrData, Rc), vbUnicode) Else ClassName = vbNullString End If End Function
Public Sub Hook(ByVal hWnd As Long) MeOldWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProc) End Sub
Public Sub UnHook(ByVal hWnd As Long) Call SetWindowLong(hWnd, GWL_WNDPROC, MeOldWndProc) End Sub
''''消息处理 Public Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Select Case uMsg Case WM_ENTERIDLE ''''Debug.Print "WM_ENTERIDLE" ChkExit Case Else ''''If ShowMsg Then Debug.Print uMsg ''''下级传递消息 WindowProc = CallWindowProc(MeOldWndProc, hWnd, uMsg, wParam, lParam) End Select End Function
Public Sub ChkExit() Dim TempPoint As POINTAPI Dim TemphWnd As Long Dim TempBool As Boolean GetCursorPos TempPoint TemphWnd = WindowFromPoint(TempPoint.X, TempPoint.Y) If TemphWnd Then TempBool = (ClassName(TemphWnd) = "#32768") Else TempBool = False End If ''''Debug.Print TempBool If TempBool <> OldIn Then If TempBool Then OldTime = 0 ChkTime = False Else OldTime = GetTickCount ChkTime = True End If OldIn = TempBool End If If ChkTime Then If GetTickCount - OldTime > 1000 Then ''''大于1秒就退出 ''''Debug.Print "Exit" keybd_event VK_ESCAPE, 0, 0, 0 keybd_event VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0 ChkTime = False End If End If End Sub
上一页 [1] [2] 没有相关教程
|