更新日付

最新投稿:大浦神社
投稿日:2026年4月13日
追記:吉備津彦神社
追記日:2026年5月7日
 火縄銃演武

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週間程度で退院。
もう別棟で気ままに生活してるのは辞めてもらいまして
今は完全に同居してます。

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

2019年6月18日火曜日

コーディング基準

雑談でコーディング基準について。

PG開発会社毎でそれぞれコーディング基準があって、
まったく異なる(時には真逆)の基準だったりする。

オイラ的にはVB.NETの場合

IF A=B THEN C=1

ってのはちょっと気持ち悪くて

IF A=B THEN
    C=1
END IF

としたい所なんだけど、1行に書かないとNGになる基準もあるらしい。
確かに行数は増えるけどさ、修正しやすは後者だと思うんだよね。
まぁ昔のBASICだともっと省略してたけどw

まぁ元受けの基準に従うしかないのだけど、ちょっと愚痴ってみたw