捕捉光驱的什么动作?
如何捕捉?

解决方案 »

  1.   

    捕捉光驱的动作:在窗体中的代码:
    Option ExplicitPrivate Sub Form_Load()
        prevWndProc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
        SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf WndProc
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        SetWindowLong Me.hWnd, GWL_WNDPROC, prevWndProc
    End Sub建立一模块,代码如下:Option Explicit
    Public Const WM_DEVICECHANGE& = 537&
    Public Const DBT_DEVICEREMOVECOMPLETE& = 32772
    Public Const DBT_DEVICEARRIVAL& = 32768Public Const GWL_WNDPROC = (-4)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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic prevWndProc As LongFunction WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If Msg = WM_DEVICECHANGE Then MsgBox "OK" '这个是光驱状态发生变化是产生的
    If wParam = DBT_DEVICEREMOVECOMPLETE Then MsgBox "1" '这个是光驱弹开时产生的
    If wParam = DBT_DEVICEARRIVAL Then MsgBox "2"  '这个是光驱关上时产生的
    WndProc = CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam)
    End Function在窗体中的代码:
    Option ExplicitPrivate Sub Form_Load()
        prevWndProc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
        SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf WndProc
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        SetWindowLong Me.hWnd, GWL_WNDPROC, prevWndProc
    End Sub建立一模块,代码如下:Option Explicit
    Public Const WM_DEVICECHANGE& = 537&
    Public Const DBT_DEVICEREMOVECOMPLETE& = 32772
    Public Const DBT_DEVICEARRIVAL& = 32768Public Const GWL_WNDPROC = (-4)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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic prevWndProc As LongFunction WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If Msg = WM_DEVICECHANGE Then MsgBox "OK" '这个是光驱状态发生变化是产生的
    If wParam = DBT_DEVICEREMOVECOMPLETE Then MsgBox "1" '这个是光驱弹开时产生的
    If wParam = DBT_DEVICEARRIVAL Then MsgBox "2"  '这个是光驱关上时产生的
    WndProc = CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam)
    End Function