基本上,这个,很难。
可以用子类操作,截获WM_DEVICECHANGE消息,具体的我也不会,反正插盘时Windows会广播这个消息

解决方案 »

  1.   

    看看《电脑商情报》99年合订本,有位叫陈华珊的北京同仁在上面有文章写过。
    是DELPHI的你也可转为VB。
      

  2.   

    Delphi的消息重载VB是做不到的,方法是:运用子类操作,截获WM_DEVICECHANGE消息
      

  3.   

    到是有个控件的说,名字好像符合要求,想要的话我给你试试先。[email protected]
      

  4.   

    谁说VB不能进行SubClassing(子类操作)!
    '由于我没有找到WM_DEVICECHANGE的定义,所以用拦截WM_MOUSEMOVE(鼠标移动)来讲解
     以下程序执行后,在窗体上移动鼠标,将弹出带有"SSS"的消息框(VB6测试通过)'以下定义一定写在一般模块中,特别是Public Fuction WndProc(),否则AdderssOf将找不到WndProc()的地址Option Explicit
    Public Const GWL_WNDPROC = (-4)
    Public Const WM_MOUSEMOVE = &H200
    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 Long
    Public preWndProc As LongPublic Function WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Select Case Msg
     Case WM_MOUSEMOVE '改变这里的Windows消息常数,拦截任何Windows消息
      MsgBox "SSS" '拦截到消息后进行操作
     Case Else
      WndProc = CallWindowProc(preWndProc, hWnd, Msg, wParam, lParam) '其他消息由VB处理
    End Select
    End Function'以下为Form_load()及Form_Unload中的程序(注意:程序执行过程中不可以使用调试工具中的任何终止操作,否则将出现非法操作!!)
    Private Sub Form_Load()
    preWndProc = GetWindowLong(Form1.hWnd, GWL_WNDPROC)
    SetWindowLong Form1.hWnd, GWL_WNDPROC, AddressOf WndProc
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    SetWindowLong Form1.hWnd, GWL_WNDPROC, preWndProc
    End Sub
      

  5.   

    如果我的程序还可,就给我一点分吧!
                       ---一个16岁的VB Fan
          
      

  6.   

    rocknet(小川) 说得对,用系统信息控件可以做这件事,
    你可以查看一下MSDN中的说明。光驱关上时会触发一个好象是SystemDevice什么的事件。
      

  7.   

    BillOB说的是正确的。用子类时小心点就是了,还有WM_DEVICECHANGE消息有点怪,以前我用子类试过,有时行有时不行
      

  8.   

    请用两个未公开函数:SHChangeNotifyRegister和SHChangeNotifyDeregister
      

  9.   

    看范例:子分类截取所有windows shell的消息  当然包括CD插入通告http://210.75.132.33/lakes/detail.asp?id=295