更新日付

最新投稿:素戔嗚神社(藤戸)
投稿日:2024年11月28日
既存投稿更新:高岡神社
更新日:2024年10月6日

2020年12月5日土曜日

CDデバイス一覧取得

ネタが無いので小出しで

手が空いて何もすることが無いので以前作成したCD-R/RW のPGをWindows10,VB2019に移植。
とは言っても変えるところはw

IMAPI2はインストールした記憶が無いのでWindows10に初期から入ってる?
コンボボックスにCDドライブを表示させたいので一覧を取得する処理から

まず、必要な参照をImportsしておく
--------------------------------------------------------------------------------
Imports IMAPI2
Imports IMAPI2FS
Imports System.Runtime.InteropServices
--------------------------------------------------------------------------------

定番のCOM開放処理を作成
--------------------------------------------------------------------------------
    ''' <summary>
    ''' COMオブジェクト解放
    ''' </summary>
    ''' <param name="obj">対象オブジェクト</param>
    Private Sub MarshalObject(ByVal obj As Object)
        Try
            If (Not obj Is Nothing) AndAlso (Marshal.IsComObject(obj)) Then
                Marshal.ReleaseComObject(obj)
            End If
        Catch ex As Exception
            Throw ex
        Finally
            obj = Nothing
        End Try

    End Sub

--------------------------------------------------------------------------------

CDデバイス一覧取得
--------------------------------------------------------------------------------
    ''' <summary>
    ''' CDデバイス名一覧取得
    ''' </summary>
    Public Function GetCDDevName() As List(Of String)

        Dim lstRet As New List(Of String)
        Dim objDiscMaster As MsftDiscMaster2 = Nothing
        Dim objDev As MsftDiscRecorder2 = Nothing

        'デバイス一覧取得
        Try
            objDiscMaster = New MsftDiscMaster2
            For Each sDev As String In objDiscMaster
                objDev = New MsftDiscRecorder2
                objDev.InitializeDiscRecorder(sDev)
                lstRet.Add(Trim(objDev.ProductId))
                MarshalObject(objDev)
            Next
        Catch ex As Exception
            Throw ex
        Finally
            MarshalObject(objDev)
            MarshalObject(objDiscMaster)
        End Try

        Return lstRet

    End Function
--------------------------------------------------------------------------------
GetCDDevName() の戻り値を ComboBox の DataSource に設定すれば表示するはず

覚書の為、検証できていないので参考程度でお願いします

0 件のコメント:

コメントを投稿