tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
CDの扉が開閉された事を取得する(VB6.0) ( No.0 )  [親スレッドへ]
日時: 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



 [スレッド一覧へ] [親スレッドへ]