|
Данный пример автоматически определит
появление и изымание компакт-диска в приводе
СД-РОМ. Проверка действия примера очень проста:
запустите ваш VB Project на выполнение, затем
отктройте дверцу СД-РОМа, вставьте диск, закройте
СД-РОМ и смотрите на сообщение на вашей форме.
В данном примере вам ОБЯЗАТЕЛЬНО потребуется модуль,
а также расположите на форме элемент Label. 'КОД МОДУЛЯ
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?
Private Sub Form_Load()
' Перенаправление сообщений 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
Label1.Caption = "Появилось устройство"
End Sub
Sub DeviceRemoveComplete()
' Здесь вы можете поместить код, который будет
выполнятся при
' удалении компакт-диска из устройства CD-ROM
Label2.Caption = "Устройство исчезло"
End Sub
'Пример с сайта www.sources.ru
|
|