ネタが無いので小出しで
手が空いて何もすることが無いので以前作成した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
''' <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 件のコメント:
コメントを投稿