2020年12月18日金曜日

CDデバイス名からRecorderUniqueID取得、トレーEJECT処理

前回の投稿で使用したCDデバイス名一覧から選択したCDデバイスを特定する処理です

前投稿[CDデバイス一覧取得]のソースがある前提で
引数に選択したCDデバイス名を指定すれば対応するデバイスのIDを取得します

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

    ''' <summary>
    ''' RecorderUniqueID取得
    ''' </summary>
    Public Function GetCDDevID(sProductId As String) As String
        Dim strRet As String = String.Empty
        Dim objDiscMaster As IMAPI2.MsftDiscMaster2 = Nothing
        Try
            'デバイス検索
            objDiscMaster = New IMAPI2.MsftDiscMaster2
            For Each sDev As String In objDiscMaster
                Dim objDev As New IMAPI2.MsftDiscRecorder2
                Try
                    objDev.InitializeDiscRecorder(sDev)
                    If Trim(objDev.ProductId) = sProductId Then
                        strRet = sDev
                        Exit For
                    End If
                Catch ex As Exception
                    Throw ex
                Finally
                    MarshalObject(objDev)
                End Try
            Next
        Catch ex As Exception
            Throw ex
        Finally
            MarshalObject(objDiscMaster)
        End Try
        Return strRet
    End Function
--------------------------------------------------------------------------------


これだけだと面白くないのでCDトレーのEJECTをさせる処理を
引数に選択したCDデバイス名を指定すれば対応するデバイスのトレーを開きます

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

    ''' <summary>
    ''' EJECT TRAY
    ''' </summary>
    ''' <param name="sProductId">Device名</param>
    Public Sub TrayEJECT(sProductId As String)

        Dim objRecorder As New IMAPI2.MsftDiscRecorder2
        Dim sRecorderUniqueID As String = GetCDDevID(sProductId)
        Try
            If Not String.IsNullOrWhiteSpace(sRecorderUniqueID) Then
                'デバイス決定
                objRecorder.InitializeDiscRecorder(sRecorderUniqueID)
                'EJECT
                objRecorder.EjectMedia()
            End If
        Catch ex As Exception
            Throw ex
        Finally
            MarshalObject(objRecorder)
        End Try

    End Sub
--------------------------------------------------------------------------------


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 に設定すれば表示するはず

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

2020年11月26日木曜日

ICD交換

 えっと、ネタがそれほど無いので2年ほど前の事を(;´Д`)汗

ICDを装着して7年ほど経ち、電圧も落ちてきたのでICD交換をすることに。

入院は一週間ほどでした。部分麻酔で何の問題もなくすんなりと。

リード線も断線などなく。

ぇっとまったく問題が無かったので面白くないですねw


そういえば最後に電気ショックを受けてから4年、最近はページング動作も無いようです。


このまま動かないで欲しいなぁ・・・


2020年7月6日月曜日

親父殿

久々の投稿ですねw
親父(80歳)のネタでも。

まず、本年正月に孫(親父からするとひ孫)が生まれまして。
それもなんだかんだと大騒ぎだったのですがw

ひと段落して、妻とドライブ中に携帯から着信。
出てみると眼科病院から。
親父が白内障の手術を受けるから説明を聞きに来てと。
全く聞いていない話w
親父一人で行って話をしてたみたい。
で、親族にもというわけで電話が。
前もって言ってほしかったなぁ・・・

数日後、店の業態変更に合わせ整理等を親父とやっていたわけですが。
親父が寝床(別棟なのですが)から出てこない。
昼過ぎに『腹が痛いから、病院に連れて行け』と。
病院に行くと緊急入院。
膵臓炎らしい。かなり進行。年齢からも覚悟が必要・・・
もうね。真っ青。親族に電話などしてオイラ一人テンパってました。
最初に行った病院では対応できないから別の総合病院に。
なんとか危機を持ち堪えて2週間程度で退院。
もう別棟で気ままに生活してるのは辞めてもらいまして
今は完全に同居してます。

ホント、今年の前半はいろんな事が重なりました。
次女も嫁いで行きましたし。