'通用部分

Public Const VK_LBUTTON = &H1
Public Const VK_RBUTTON = &H2
Public Const VK_CANCEL = &H3
Public Const VK_MBUTTON = &H4
Public Const VK_BACK = &H8
Public Const VK_TAB = &H9
Public Const VK_CLEAR = &HC
Public Const VK_RETURN = &HD
Public Const VK_SHIFT = &H10
Public Const VK_CONTROL = &H11
Public Const VK_MENU = &H12
Public Const VK_PAUSE = &H13
Public Const VK_CAPITAL = &H14
Public Const VK_ESCAPE = &H1B
Public Const VK_SPACE = &H20
Public Const VK_PRIOR = &H21
Public Const VK_NEXT = &H22
Public Const VK_END = &H23
Public Const VK_HOME = &H24
Public Const VK_LEFT = &H25
Public Const VK_UP = &H26
Public Const VK_RIGHT = &H27
Public Const VK_DOWN = &H28
Public Const VK_Select = &H29
Public Const VK_PRINT = &H2A
Public Const VK_EXECUTE = &H2B
Public Const VK_SNAPSHOT = &H2C
Public Const VK_Insert = &H2D
Public Const VK_Delete = &H2E
Public Const VK_HELP = &H2F
Public Const VK_0 = &H30
Public Const VK_1 = &H31
Public Const VK_2 = &H32
Public Const VK_3 = &H33
Public Const VK_4 = &H34
Public Const VK_5 = &H35
Public Const VK_6 = &H36
Public Const VK_7 = &H37
Public Const VK_8 = &H38
Public Const VK_9 = &H39
Public Const VK_A = &H41
Public Const VK_B = &H42
Public Const VK_C = &H43
Public Const VK_D = &H44
Public Const VK_E = &H45
Public Const VK_F = &H46
Public Const VK_G = &H47
Public Const VK_H = &H48
Public Const VK_I = &H49
Public Const VK_J = &H4A
Public Const VK_K = &H4B
Public Const VK_L = &H4C
Public Const VK_M = &H4D
Public Const VK_N = &H4E
Public Const VK_O = &H4F
Public Const VK_P = &H50
Public Const VK_Q = &H51
Public Const VK_R = &H52
Public Const VK_S = &H53
Public Const VK_T = &H54
Public Const VK_U = &H55
Public Const VK_V = &H56
Public Const VK_W = &H57
Public Const VK_X = &H58
Public Const VK_Y = &H59
Public Const VK_Z = &H5A
Public Const VK_STARTKEY = &H5B
Public Const VK_CONTEXTKEY = &H5D
Public Const VK_NUMPAD0 = &H60
Public Const VK_NUMPAD1 = &H61
Public Const VK_NUMPAD2 = &H62
Public Const VK_NUMPAD3 = &H63
Public Const VK_NUMPAD4 = &H64
Public Const VK_NUMPAD5 = &H65
Public Const VK_NUMPAD6 = &H66
Public Const VK_NUMPAD7 = &H67
Public Const VK_NUMPAD8 = &H68
Public Const VK_NUMPAD9 = &H69
Public Const VK_MULTIPLY = &H6A
Public Const VK_ADD = &H6B
Public Const VK_SEPARATOR = &H6C
Public Const VK_SUBTRACT = &H6D
Public Const VK_DECIMAL = &H6E
Public Const VK_DIVIDE = &H6F
Public Const VK_F1 = &H70
Public Const VK_F2 = &H71
Public Const VK_F3 = &H72
Public Const VK_F4 = &H73
Public Const VK_F5 = &H74
Public Const VK_F6 = &H75
Public Const VK_F7 = &H76
Public Const VK_F8 = &H77
Public Const VK_F9 = &H78
Public Const VK_F10 = &H79
Public Const VK_F11 = &H7A
Public Const VK_F12 = &H7B
Public Const VK_F13 = &H7C
Public Const VK_F14 = &H7D
Public Const VK_F15 = &H7E
Public Const VK_F16 = &H7F
Public Const VK_F17 = &H80
Public Const VK_F18 = &H81
Public Const VK_F19 = &H82
Public Const VK_F20 = &H83
Public Const VK_F21 = &H84
Public Const VK_F22 = &H85
Public Const VK_F23 = &H86
Public Const VK_F24 = &H87
Public Const VK_NUMLOCK = &H90
Public Const VK_OEM_SCROLL = &H91
Public Const VK_OEM_1 = &HBA
Public Const VK_OEM_PLUS = &HBB
Public Const VK_OEM_COMMA = &HBC
Public Const VK_OEM_MINUS = &HBD
Public Const VK_OEM_PERIOD = &HBE
Public Const VK_OEM_2 = &HBF
Public Const VK_OEM_3 = &HC0
Public Const VK_OEM_4 = &HDB
Public Const VK_OEM_5 = &HDC
Public Const VK_OEM_6 = &HDD
Public Const VK_OEM_7 = &HDE
Public Const VK_OEM_8 = &HDF
Public Const VK_ICO_F17 = &HE0
Public Const VK_ICO_F18 = &HE1
Public Const VK_OEM102 = &HE2
Public Const VK_ICO_HELP = &HE3
Public Const VK_ICO_00 = &HE4
Public Const VK_ICO_CLEAR = &HE6
Public Const VK_OEM_RESET = &HE9
Public Const VK_OEM_JUMP = &HEA
Public Const VK_OEM_PA1 = &HEB
Public Const VK_OEM_PA2 = &HEC
Public Const VK_OEM_PA3 = &HED
Public Const VK_OEM_WSCTRL = &HEE
Public Const VK_OEM_CUSEL = &HEF
Public Const VK_OEM_ATTN = &HF0
Public Const VK_OEM_FINNISH = &HF1
Public Const VK_OEM_COPY = &HF2
Public Const VK_OEM_AUTO = &HF3
Public Const VK_OEM_ENLW = &HF4
Public Const VK_OEM_BACKTAB = &HF5
Public Const VK_ATTN = &HF6
Public Const VK_CRSEL = &HF7
Public Const VK_EXSEL = &HF8
Public Const VK_EREOF = &HF9
Public Const VK_PLAY = &HFA
Public Const VK_ZOOM = &HFB
Public Const VK_NONAME = &HFC
Public Const VK_PA1 = &HFD
Public Const VK_OEM_CLEAR = &HFE

'拖动窗口部分
Option Explicit
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long

Dim I As Long, J As Long, s As String


Private 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
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Private Const WM_CHAR = &H102
'Private Const VK_A = &H41

'常量声明
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_MBUTTONDBLCLK = &H209
Private Const WM_MBUTTONDOWN = &H207
Private Const WM_MBUTTONUP = &H208
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205

Public Sub add_dll()  '注入 程序运行 所需要的 DLL
'On Error Resume Next

If Dir("C:\WINDOWS\system32", vbDirectory) = "" Then MkDir "C:\WINDOWS\system32" '判断 文件夹  是否存在 没有:就创建
'If Dir("C:\Program Files\校园LoLo\ICO", vbDirectory) = "" Then MkDir "C:\Program Files\校园LoLo\ICO" '判断 文件夹  是否存在 没有:就创建
      
      
Dim funm1 As Integer
Dim data_dll() As Byte

 
    If Dir("C:\WINDOWS\system32\dx8vb.dll") = "" Then
       data_dll = LoadResData(101, "CUSTOM")
       funm1 = FreeFile()
      
       Open "C:\WINDOWS\system32\dx8vb.dll" For Binary As funm1
    
       Put #1, , data_dll
       Close funm1
    End If
   
 
   
End Sub

 

窗体部分

Dim toumingdu As Double  '透明度控制
Dim zuixiaohua As Boolean '最小化
Dim xiaoxi As String '设置返回信息

'传递鼠标消息
Private 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)
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
'Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Const MOUSEEVENTF_MOVE = &H1 '  mouse move
Const MOUSEEVENTF_LEFTDOWN = &H2 '  left button down
Const MOUSEEVENTF_LEFTUP = &H4 '  left button up

 

'最小化到托盘
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Const NIM_ADD = &H0
Const NIM_DELETE = &H2
Const NIF_ICON = &H2
Const NIF_MESSAGE = &H1
Const NIF_TIP = &H4
Const WM_MOUSEMOVE = &H200
'Const WM_LBUTTONDBLCLK = &H203
'Const WM_LBUTTONUP = &H202

Private Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
uId As Long
uFlags As Long
uCallBackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Dim tray As NOTIFYICONDATA

 


Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub ReleaseCapture Lib "user32" ()
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2


'窗体透明渐变
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const WS_EX_LAYERED = &H80000
Private Const GWL_EXSTYLE = (-20)
Private Const LWA_ALPHA = &H2
Private Const LWA_COLORKEY = &H1

 


Dim key_down(60) As Boolean
Dim key_down1(60) As Boolean

Dim dx As DirectX8
Dim D3D As Direct3D8
Dim D3DDevice As Direct3DDevice8
Dim d3dx As D3DX8
Dim Sprite As D3DXSprite


Dim DI As DirectInput8
Dim DIDEV As DirectInputDevice8
Dim DIState As DIKEYBOARDSTATE

Dim onfoo As Boolean

 

 


Private Function GetWinText(ByVal hwnd As Long) As String
   GetWinText = String(1024, Chr(0))
   GetWindowText hwnd, GetWinText, Len(GetWinText)
   GetWinText = Left$(GetWinText, InStr(GetWinText, Chr(0)) - 1)
End Function

Private Sub Command1_Click()
  
   I = GetWindow(hwnd, 0&)
   Do Until I = 0
      If IsWindowVisible(I) Then
         s = Trim(GetWinText(I))
         If InStr(s, "Photoshop") Then
            'MsgBox "窗口句柄为: " & i
            '这时候i就是该程序的句柄,你可以在此发送按键消息了
            '或者你也可以把这个i记录下来,然后在timer中向该窗口定时发送按键消息
            Exit Sub
         End If
      End If
      I = GetWindow(I, 2&)
   Loop
End Sub


Function MakeKeyLparam(ByVal VirtualKey As Long, ByVal flag As Long) As Long
    Dim s As String
    Dim Firstbyte As String    'lparam参数的24-31位
    If flag = WM_KEYDOWN Then '如果是按下键
        Firstbyte = "00"
    Else
        Firstbyte = "C0"       '如果是释放键
    End If
    Dim Scancode As Long
    '获得键的扫描码
    Scancode = MapVirtualKey(VirtualKey, 0)
    Dim Secondbyte As String   'lparam参数的16-23位,即虚拟键扫描码
    Secondbyte = Right("00" & Hex(Scancode), 2)
    s = Firstbyte & Secondbyte & "0001" '0001为lparam参数的0-15位,即发送次数和其它扩展信息
    MakeKeyLparam = Val("&H" & s)
End Function

 

 

Private Sub Form_DblClick()

      Timer5.Enabled = True
      Timer5.Interval = 30

     
     
     
End Sub

Private Sub Form_Load()

        Set dx = New DirectX8
        Set D3D = dx.Direct3DCreate

初始化:
        ''''''''''''''''''''''''''' 启动Direct Input,用于检测键盘 ''''''''''''''''''''''''''''''
        Set DI = dx.DirectInputCreate()
        Set DIDEV = DI.CreateDevice("GUID_SysKeyboard")
        DIDEV.SetCommonDataFormat DIFORMAT_KEYBOARD
        DIDEV.SetCooperativeLevel Me.hwnd, DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE
        DIDEV.Acquire
       
Form1.Timer1.Enabled = True
Form1.Timer1.Interval = 10

Form1.Timer2.Enabled = True
Form1.Timer2.Interval = 10
    
    
     Dim rtn As Long      '初始化窗体透明度为0
      rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
      rtn = rtn Or WS_EX_LAYERED
      SetWindowLong hwnd, GWL_EXSTYLE, rtn
      SetLayeredWindowAttributes hwnd, 0, 0, LWA_ALPHA
     
     
    Timer3.Enabled = True
    Timer3.Interval = 30
 
    toumingdu = 0
   
    
    
    
End Sub

 

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long '窗体移动
If Button = 1 And zuixiaohua = False Then
ReleaseCapture
lngReturnValue = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If

Dim msg As Long  '退出托盘
msg = X / 15
If msg = WM_LBUTTONUP And zuixiaohua = True Then
Me.Show
Shell_NotifyIcon NIM_DELETE, tray
'mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0

'mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0

zuixiaohua = False


Timer3.Enabled = True
Timer3.Interval = 30


End If
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
      toumingdu = 3.14 / 2
      Timer2.Enabled = True
      Timer2.Interval = 20
      Cancel = 0
      UnloadMode = 0
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long '窗体移动
If Button = 1 And zuixiaohua = False Then
ReleaseCapture
lngReturnValue = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If

End Sub

Private Sub Label2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long '窗体移动
If Button = 1 And zuixiaohua = False Then
ReleaseCapture
lngReturnValue = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If

End Sub

Private Sub Label3_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long '窗体移动
If Button = 1 And zuixiaohua = False Then
ReleaseCapture
lngReturnValue = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If

End Sub

Private Sub Label4_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long '窗体移动
If Button = 1 And zuixiaohua = False Then
ReleaseCapture
lngReturnValue = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub

Private Sub Label5_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long '窗体移动
If Button = 1 And zuixiaohua = False Then
ReleaseCapture
lngReturnValue = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub

Private Sub Label6_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long '窗体移动
If Button = 1 And zuixiaohua = False Then
ReleaseCapture
lngReturnValue = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub

Private Sub MyButton1_Click()
    
      Timer5.Enabled = True
      Timer5.Interval = 30
End Sub

Private Sub Timer1_Timer()
   
     
      DIDEV.GetDeviceStateKeyboard DIState
     
      If DIState.Key(183) <> 0 Then
      key_down(60) = True
      End If
        
      key_down(59) = DIState.Key(DIK_RIGHT)
     
      key_down(58) = DIState.Key(DIK_LEFT)
        
      key_down(56) = DIState.Key(DIK_UP)
        
      key_down(57) = DIState.Key(DIK_DOWN)
        
      key_down(27) = DIState.Key(DIK_F1)
        
      key_down(28) = DIState.Key(DIK_F2)
        
      key_down(29) = DIState.Key(DIK_F3)
        
      key_down(30) = DIState.Key(DIK_F4)
        
      key_down(31) = DIState.Key(DIK_F5)
        
      key_down(32) = DIState.Key(DIK_F6)
        
      key_down(33) = DIState.Key(DIK_F7)
        
      key_down(34) = DIState.Key(DIK_F8)
        
      key_down(35) = DIState.Key(DIK_F9)
        
      key_down(36) = DIState.Key(DIK_F10)
        
      key_down(37) = DIState.Key(DIK_F11)
        
      key_down(38) = DIState.Key(DIK_F12)
        
      key_down(49) = DIState.Key(DIK_ESCAPE)
        
      key_down(50) = DIState.Key(DIK_TAB)
        
      key_down(51) = DIState.Key(DIK_LSHIFT) Or DIState.Key(DIK_RSHIFT)
        
      key_down(52) = DIState.Key(DIK_LCONTROL) Or DIState.Key(DIK_RCONTROL)
        
      key_down(53) = DIState.Key(DIK_LALT) Or DIState.Key(DIK_RALT)
        
      key_down(54) = DIState.Key(DIK_SPACE)
        
      key_down(55) = DIState.Key(DIK_RETURN)
        
      key_down(1) = DIState.Key(DIK_A)
        
      key_down(2) = DIState.Key(DIK_B)
        
      key_down(3) = DIState.Key(DIK_C)
        
      key_down(4) = DIState.Key(DIK_D)
        
      key_down(5) = DIState.Key(DIK_E)
        
      key_down(6) = DIState.Key(DIK_F)
        
      key_down(7) = DIState.Key(DIK_G)
        
      key_down(8) = DIState.Key(DIK_H)
        
      key_down(9) = DIState.Key(DIK_I)
        
      key_down(10) = DIState.Key(DIK_J)
        
      key_down(11) = DIState.Key(DIK_K)
        
      key_down(12) = DIState.Key(DIK_L)
        
      key_down(13) = DIState.Key(DIK_M)
        
      key_down(14) = DIState.Key(DIK_N)
        
      key_down(15) = DIState.Key(DIK_O)
        
      key_down(16) = DIState.Key(DIK_P)
        
      key_down(17) = DIState.Key(DIK_Q)
        
      key_down(18) = DIState.Key(DIK_R)
        
      key_down(19) = DIState.Key(DIK_S)
        
      key_down(20) = DIState.Key(DIK_T)
        
      key_down(21) = DIState.Key(DIK_U)
        
      key_down(22) = DIState.Key(DIK_V)
        
      key_down(23) = DIState.Key(DIK_W)
        
      key_down(24) = DIState.Key(DIK_X)
        
      key_down(25) = DIState.Key(DIK_Y)
        
      key_down(26) = DIState.Key(DIK_Z)
        
      key_down(39) = DIState.Key(DIK_0)
        
      key_down(40) = DIState.Key(DIK_1)
        
      key_down(41) = DIState.Key(DIK_2)
        
      key_down(42) = DIState.Key(DIK_3)
        
      key_down(43) = DIState.Key(DIK_4)
        
      key_down(44) = DIState.Key(DIK_5)
        
      key_down(45) = DIState.Key(DIK_6)
        
      key_down(46) = DIState.Key(DIK_7)
        
      key_down(47) = DIState.Key(DIK_8)
        
      key_down(48) = DIState.Key(DIK_9)
     
      If key_down(3) = True Then key_down(54) = True
   
   
End Sub

 

 


Private Sub Timer2_Timer()
        Dim lpClassName As String
        Dim lpWindowName As String
        Dim hWndX As Long
       
        Dim lpClassName1 As String
        Dim lpWindowName1 As String
        Dim hWndX1 As Long
       
        Dim lpClassName2 As String
        Dim lpWindowName2 As String
        Dim hWndX2 As Long
       

        lpClassName = "Photoshop" '用VB企业版自带的SPY++工具可以查看游戏窗口的类名和标题
        lpWindowName = "Adobe Photoshop"
        hWndX = FindWindow(lpClassName, lpWindowName) '这一步获得游戏窗口的句柄,发送消息时需要
       
        lpClassName1 = "Photoshop" '用VB企业版自带的SPY++工具可以查看游戏窗口的类名和标题
        lpWindowName1 = "Adobe Photoshop CS3 Extended"
        hWndX1 = FindWindow(lpClassName1, lpWindowName1) '这一步获得游戏窗口的句柄,发送消息时需要
       
        lpClassName2 = "Photoshop" '用VB企业版自带的SPY++工具可以查看游戏窗口的类名和标题
        lpWindowName2 = "Adobe Photoshop CS4 Extended"
        hWndX2 = FindWindow(lpClassName2, lpWindowName2) '这一步获得游戏窗口的句柄,发送消息时需要
       
        I = GetWindow(hwnd, 0&)
        Do Until I = 0
        If IsWindowVisible(I) Then
           s = Trim(GetWinText(I))
           If InStr(s, "Photoshop") Then
              'MsgBox "窗口句柄为: " & i
              '这时候i就是该程序的句柄,你可以在此发送按键消息了
              '或者你也可以把这个i记录下来,然后在timer中向该窗口定时发送按键消息
              Exit Do
           End If
        End If
        I = GetWindow(I, 2&)
        Loop
       
        If hWndX2 = 0 Then
           hWndX2 = I
        End If
        'Dim wMsg As Long, wParam As Long, lParam As Long, Rx As Long, xx As Integer, yy As Integer
        'xx = 100 '点击的x坐标
        'yy = 100 '点击的y坐标
        'wMsg = WM_LBUTTONDOWN '左键按下消息
        'wParam = 1
        'lParam = yy * 65536 + xx
        'Call PostMessage(hWndX, wMsg, wParam, lParam) '发送消息
        If key_down(43) = True Then
           If key_down1(43) = False Then
              PostMessage hWndX, WM_KEYDOWN, VK_E, MakeKeyLparam(VK_E, WM_KEYDOWN)
              PostMessage hWndX1, WM_KEYDOWN, VK_E, MakeKeyLparam(VK_E, WM_KEYDOWN)
             ' PostMessage hWndX2, WM_KEYDOWN, VK_E, MakeKeyLparam(VK_E, WM_KEYDOWN)
              key_down1(43) = True
           End If
        Else
       
           If key_down1(43) = True Then
              PostMessage hWndX, WM_KEYUP, VK_E, MakeKeyLparam(VK_E, WM_KEYUP)
              PostMessage hWndX1, WM_KEYUP, VK_E, MakeKeyLparam(VK_E, WM_KEYUP)
              'PostMessage hWndX2, WM_KEYUP, VK_E, MakeKeyLparam(VK_E, WM_KEYUP)
              key_down1(43) = False
           End If
        End If
        '---------------------------------------------------------
       If key_down(45) = True Then
           If key_down1(45) = False Then
             
              PostMessage hWndX2, WM_KEYDOWN, VK_E, MakeKeyLparam(VK_E, WM_KEYDOWN)
              key_down1(45) = True
           End If
        Else
       
           If key_down1(45) = True Then
             
              PostMessage hWndX2, WM_KEYUP, VK_E, MakeKeyLparam(VK_E, WM_KEYUP)
              key_down1(45) = False
           End If
        End If
       
      
    
End Sub


Private Sub Timer3_Timer()
    
       Dim m1 As Integer
       Dim rtn As Long
      toumingdu = toumingdu + 0.1
      m1 = Sin(toumingdu) * 255
 
      rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
      rtn = rtn Or WS_EX_LAYERED
      SetWindowLong hwnd, GWL_EXSTYLE, rtn
      SetLayeredWindowAttributes hwnd, 0, m1, LWA_ALPHA  '这个还能实现让指定颜色变为 透明
      '例如 SetLayeredWindowAttributes hwnd, &HFF00&, m1, LWA_ALPHA Or LWA_COLORKEY  窗体上有 &HFF00& 颜色的地方 多是透明的
   If toumingdu > 3.14 / 2 Then
     Timer3.Enabled = False
    
     If onfoo = False Then
            Timer5.Enabled = True
            Timer5.Interval = 30
            onfoo = True
     End If
   End If
       
       
       
End Sub

 

 

Private Sub Timer4_Timer()
   Timer3.Enabled = False
   Dim m1 As Integer
   Dim rtn As Long
     
      m1 = Sin(toumingdu) * 255
 
      rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
      rtn = rtn Or WS_EX_LAYERED
      SetWindowLong hwnd, GWL_EXSTYLE, rtn
      SetLayeredWindowAttributes hwnd, 0, m1, LWA_ALPHA
      toumingdu = toumingdu - 0.1
   If toumingdu < 0 Then
     Timer4.Enabled = False
     Unload Me
    
   End If
End Sub


Private Sub Timer5_Timer()
Dim m1 As Integer
   Dim rtn As Long
     
      m1 = Sin(toumingdu) * 255
 
      rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
      rtn = rtn Or WS_EX_LAYERED
      SetWindowLong hwnd, GWL_EXSTYLE, rtn
      SetLayeredWindowAttributes hwnd, 0, m1, LWA_ALPHA
      toumingdu = toumingdu - 0.1
   If toumingdu < 0 Then
     Timer5.Enabled = False
    
      tray.cbSize = Len(tray)
      tray.uId = vbNull
      tray.hwnd = Me.hwnd
      tray.uFlags = NIF_TIP Or NIF_MESSAGE Or NIF_ICON
      tray.uCallBackMessage = WM_MOUSEMOVE
      tray.hIcon = Me.Icon
      tray.szTip = "PS改键器-Z.G.L" & vbNullChar
      Shell_NotifyIcon NIM_ADD, tray
      Me.Hide
      zuixiaohua = True
    
    
   End If
End Sub

 


Private Sub Timer6_Timer()
   Timer3.Enabled = False
   Dim m1 As Integer
   Dim rtn As Long
     
      m1 = Sin(toumingdu) * 255
 
      rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
      rtn = rtn Or WS_EX_LAYERED
      SetWindowLong hwnd, GWL_EXSTYLE, rtn
      SetLayeredWindowAttributes hwnd, 0, m1, LWA_ALPHA
      toumingdu = toumingdu - 0.1
   If toumingdu < 0 Then
     Timer4.Enabled = False
     tray.cbSize = Len(tray)
      tray.uId = vbNull
      tray.hwnd = Me.hwnd
      tray.uFlags = NIF_TIP Or NIF_MESSAGE Or NIF_ICON
      tray.uCallBackMessage = WM_MOUSEMOVE
      tray.hIcon = Me.Icon
      tray.szTip = "PS改键器-Z.G.L" & vbNullChar
      Shell_NotifyIcon NIM_ADD, tray
      Me.Hide
      zuixiaohua = True
   End If

End Sub

 

以下代码亲测可用

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Form_Load()
    Form1.Visible = False      '隐藏窗体
    App.TaskVisible = False    '在任务管理器中隐藏应用程序
    Timer1.Enabled = True
    Timer1.Interval = 10
    Timer2.Enabled = True
    Timer2.Interval = 1000     '以下三排为写入开机启动注册表
    Timer3.Enabled = True
    Timer3.Interval = 60000
    Set W = CreateObject("wscript.shell")
    W.regwrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & _
        App.EXEName, App.Path & "\" & App.EXEName & ".exe"
End Sub

Private Sub Timer1_Timer()
    If GetAsyncKeyState(vbKeyControl) And GetAsyncKeyState(vbKeyMenu) _
        And GetAsyncKeyState(vbKeyF5) Then      '判断3个键是否同时按下
        Timer2.Enabled = True  '启动 Timer2
        Timer3.Enabled = True  '启动 Timer3
        Dim K As Integer
        For K = 0 To 255       '清除所有的按键值以免影响之后的操作
            GetAsyncKeyState (K)
        Next K
    End If
    If GetAsyncKeyState(vbKeyControl) And GetAsyncKeyState(vbKeyMenu) _
        And GetAsyncKeyState(vbKeyF8) Then      '判断3个键是否同时按下
        Timer2.Enabled = False '停止 Timer2
        Timer3.Enabled = False '停止 Timer3
        Dim G As Integer
        For G = 0 To 255       '清除所有的按键值以免影响之后的操作
            GetAsyncKeyState (G)
        Next G
    End If
End Sub