Разделы
Главная

Windows API
Реестр
MS Access
Visual Basic
Download
Форум
Гостевая книга
Ссылки

E-mail

Партнерская программа WWW.PORTA.RU (on-line магазин портативной аудио, видео, фототехники). Самая щедрая, самая честная, самая популярная. Приглашаем всех веб-мастеров к участию!



Submitter.ru - Free promoting
Visual Basic

вернуться назад Как определить когда появится диск в CD-ROM?

Текст модуля:

Public 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

Public Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As Long

Public Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Const GWL_WNDPROC = (-4)
Public Const WM_DEVICECHANGE = &H219

Public glngPrevWndProc As Long


Public Function MyWindowProc(ByVal hwnd As Long, _
ByVal Msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
   If Msg = WM_DEVICECHANGE Then
      Select Case wParam
      ' Событие возникает при появлении нового диска в CD-ROM'е.
      Case &H8000&
      Call Form1.DeviceArrival
      ' Событие возникает при изъятии диска из CD-ROM'а
      Case &H8004&
      Call Form1.DeviceRemoveComplete
      End Select
      MyWindowProc = 0
      Exit Function
   End If
' остальные сообщения передаются для обработки стандартной
' процедуре окна

MyWindowProc = CallWindowProc(glngPrevWndProc, hwnd, Msg, wParam, lParam)
End Function


Текст формы:

' определение наличия в CD-ROM диска
' для работы необходимо добавить:
' Label2


Private Sub Form_Load()
Me.Caption = "Как определить когда появляется диск в CD-ROM?"
Label2.Visible = False
' Перенаправление сообщений Windows от формы к собственной
' процедуре обработки сообщений Module1.MyWindowProc

glngPrevWndProc = GetWindowLong(hwnd, GWL_WNDPROC)
SetWindowLong hwnd, GWL_WNDPROC, AddressOf MyWindowProc
End Sub



Private Sub Form_Unload(Cancel As Integer)
' Возвращение управления форме
SetWindowLong hwnd, GWL_WNDPROC, glngPrevWndProc
End Sub


Sub DeviceArrival()
' Здесь вы можете поместить код, который будет выполнятся при
' появление компакт-диска в устройстве CD-ROM

Label2.Visible = True
Label2.Caption = "Появился новый диск в CD-ROM"
End Sub


Sub DeviceRemoveComplete()
' Здесь вы можете поместить код, который будет выполнятся при
' удалении компакт-диска из устройства CD-ROM

Label2.Visible = True
Label2.Caption = "Диск из CD-ROMа вынут!"
End Sub


Диск в CD-ROM (3 011 байт)