tagCANDY CGI VBレスキュー(花ちゃん) - CDの扉が開閉された事を取得する(VB6.0) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
CDの扉が開閉された事を取得する(VB6.0)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

CDの扉が開閉された事を取得する(VB6.0) [No.3の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.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
メンテ

Page: 1 |

CDの扉が開閉された事を取得する(VB6.0)_1  (No.1の個別表示) [スレッド一覧へ]
日時: 2011/04/05 11:21
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[周辺機器][ドライブ][]                                          *
* キーワード:,CD,開閉,イベント,扉を開く,扉を閉じる                      *
***********************************************************************************

SysInfo.OCX を使った方法

【VB6.0用の開設当初の掲示板のログより】

----------------------------------------------------------------------------------
No.5168 Re: CD-ROMドライブ  投稿者:SSK [2002/06/30(日)16:57分]
----------------------------------------------------------------------------------

既に解決とは思いますが、SysInfo.OCX の DeviceRemoveComplete()イベントに、
文書番号: JP163503 の様な処理を追加するとしたら、次の様になると思います。

Private Sub SysInfo1_DeviceRemoveComplete(ByVal DeviceType As Long, _
         ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
    Select Case DeviceType
    Case 2 ' logical volume
        If (DeviceData And &H1&) Then ' change affects media
            Dim strDrive As String
            strDrive = FirstDriveFromMask(DeviceID)
            Debug.Print strDrive & " ドライブから取り出されました。"
        End If
    End Select
End Sub

' ドライブ名のマスクから最初に有効なドライブ名を検索
Private Function FirstDriveFromMask(ByVal unitmask As Long) As String
    Dim i As Long
    For i = 0 To 25
       If (unitmask And &H1&) Then Exit For
       unitmask = unitmask \ 2
    Next i
    FirstDriveFromMask = Chr$(i + Asc("A"))
End Function
メンテ
CDの扉が開閉された事を取得する(VB6.0)_2  (No.2の個別表示) [スレッド一覧へ]
日時: 2011/04/05 11:22
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[周辺機器][ドライブ][]                                          *
* キーワード:,CD,開閉,イベント,扉を開く,扉を閉じる                      *
***********************************************************************************

SysInfo.OCX を使った方法

【VB6.0用の開設当初の掲示板のログより】

---------------------------------------------------------------------------
No.5145 Re: CD-ROMドライブ  投稿者:とろ [2002/06/28(金)13:07分]
---------------------------------------------------------------------------

Private Sub SysInfo1_DeviceArrival(ByVal DeviceType As Long, _
           ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
    Debug.Print "DeviceArrival"
End Sub
Private Sub SysInfo1_DeviceRemoveComplete(ByVal DeviceType As Long, _
           ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
    Debug.Print "DeviceRemoveComplete"
End Sub
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ