- 日時: 2010/01/07 13:49
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[周辺機器][ドライブ][] * * キーワード:,CD,開閉,イベント,扉を開く,扉を閉じる * ***********************************************************************************
下記はサブクラス化によるサンプルですので、サブクラス化の知識のない方は使用しないように。
★ ご使用される場合は、下記の掲示板のログ(2002/06/29)前後の記事を読んでから 使用するようにして下さい。
【VB6.0用の開設当初の掲示板のログより】
----------------------------------------------------------------------------- No.5164 Re: CD-ROMドライブ 投稿者:とろ [2002/06/29(土)3:11分] -----------------------------------------------------------------------------
'********************************************** '以下、 フォームモジュールに記述 Private Sub Form_Load() '* 当ウィンドウのメッセージ処理は、独自のウィンドウプロシージャで行うように設定 hOldWinProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf myWinProc) End Sub Private Sub Form_Unload(Cancel As Integer) '* 当ウィンドウのメッセージ処理は、本来のウィンドウプロシージャで行うように設定 Call SetWindowLong(Me.hWnd, GWL_WNDPROC, hOldWinProc) End Sub
'********************************************** '以下、 標準モジュールに記述 Public Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" ( _ ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function CallWindowProc Lib "user32.dll" 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 hOldWinProc As Long Public Const GWL_WNDPROC = (-4) Public Const WM_DEVICECHANGE = &H219& Public Const DBT_DEVICEARRIVAL = &H8000& Public Const DBT_DEVICEREMOVECOMPLETE = &H8004& '* 独自のメッセージ処理を行うウィンドウプロシージャ Public Function myWinProc(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 Case DBT_DEVICEARRIVAL '* デバイスが追加された( SysInfo1_DeviceArrival イベントに相当) Debug.Print "DeviceArrival" Case DBT_DEVICEREMOVECOMPLETE '* デバイスが削除された( SysInfo1_DeviceRemoveComplete イベントに相当) Debug.Print "DeviceRemoveComplete" End Select End If '* 最後に、本来のメッセージ処理を行う myWinProc = CallWindowProc(hOldWinProc, hWnd, Msg, wParam, lParam) End Function
|