windows

VB.NETでMediaPlayer

VB.NETでMediaPlayer

環境 Windows11 23H2 & Visual Studio 2022 & axWindowsMediaPlayerコントロールを利用。

TaglibSharp Mediaファイルからアルバム情報を取得します。

メイン画面

処理メニュー画面

開くメニュー画面

複数選択可能です。

開くメニュー終了後

プレイリストに追加されます。繰り返し行うことでプレイリストに追加されます。音声ファイルのtag情報よりアルバム画像を表示します。

操作メニュー画面

リスト処理メニュー画面

リスト消去は、プレイリストを消去します。

リスト保存処理

ファイル名を指定しプレイリストを保存します。フォルダーは、既定フォルダーが最初に指定されます。

リスト読込処理

ファイル名を指定しプレイリストを読込ます。フォルダーは、既定フォルダーが最初に指定されます。

設定メニュー処理

既定フォルダーは、mediaファイルを開く当初フォルダーとなります。画像ファイルは、tagファイルより取得できないとき、表示される画像です。保存フォルダーは、プレイリストの既定保存フォダーです。

ソリューション

newState 各種演奏状態の値

WindowsMediaPlayerが演奏中かどうか調べます。
AxWindowsMediaPlayerが演奏中なのか停止中なのか又は準備中なのかなどの情報は、
AxWindowsMediaPlayer1_PlayStateChangeイベントハンドラーで取得できます。
第二引数のeの情報を使います。

axWindowsMediaPlayerの現在の状態(停止中とか演奏中とか準備中とか)は「e.newState」で取得できます。

演奏の状態コード
0未定義WMPLib.WMPPlayState.wmppsUndefined
1停止WMPLib.WMPPlayState.wmppsStopped
2一時停止WMPLib.WMPPlayState.wmppsPaused
3再生WMPLib.WMPPlayState.wmppsPlaying
4早送りWMPLib.WMPPlayState.wmppsScanForward
5高速巻き戻しWMPLib.WMPPlayState.wmppsScanReverse
6追加データを取得WMPLib.WMPPlayState.wmppsBuffering
7接続待機WMPLib.WMPPlayState.wmppsWaiting
8再生を完了WMPLib.WMPPlayState.wmppsMediaEnded
9準備WMPLib.WMPPlayState.wmppsTransitioning
10準備完了WMPLib.WMPPlayState.wmppsReady
11再接続WMPLib.WMPPlayState.wmppsReconnecting

登録ファイルが1つの場合演奏終了時に「e.newState」の値が1になるようです。
登録ファイル数が複数の場合は演奏終了時に「e.newState」の値が8になるようです。

演奏状態の変化のイベントプロシージャの中で「e.newState=3」の時、再生中になったとき各情報を取得できます。AxWindowsMediaPlayer1.currentMedia.getItemInfo("xxxxx")

getItemInfo

  .getItemInfo("AcquisitionTime")
  .getItemInfo("AlbumID")
  .getItemInfo("AlbumIDAlbumArtist")
  .getItemInfo("Author")
  .getItemInfo("AverageLevel")
  .getItemInfo("Bitrate")
  .getItemInfo("BuyNow")
  .getItemInfo("BuyTickets")
  .getItemInfo("Copyright")
  .getItemInfo("CurrentBitrate")
  .getItemInfo("Duration")
  .getItemInfo("FileSize")
 .getItemInfo("FileType")
  .getItemInfo("Is_Protected")
  .getItemInfo("IsVBR")
  .getItemInfo("MediaType")
  .getItemInfo("MoreInfo")
  .getItemInfo("PeakValue")
  .getItemInfo("ProviderLogoURL")
  .getItemInfo("ProviderURL")
  .getItemInfo("RecordingTime")
  .getItemInfo("Writer")
 .getItemInfo("RequestState")
 .getItemInfo("SourceURL")
  .getItemInfo("SyncState")
  .getItemInfo("Title")
  .getItemInfo("TrackingID")
  .getItemInfo("UserCustom1")
 .getItemInfo("UserCustom2")
  .getItemInfo("UserEffectiveRating")
 .getItemInfo("UserLastPlayedTime")
 .getItemInfo("UserPlayCount")
 .getItemInfo("UserPlaycountAfternoon")
  .getItemInfo("UserPlaycountEvening")
  .getItemInfo("UserPlaycountMorning")
  .getItemInfo("UserPlaycountNight")
  .getItemInfo("UserPlaycountWeekday")
  .getItemInfo("UserPlaycountWeekend")
  .getItemInfo("UserRating")
  .getItemInfo("UserServiceRating")
  .getItemInfo("WM/AlbumArtist")
 .getItemInfo("WM/AlbumTitle")
  .getItemInfo("WM/Category")
  .getItemInfo("WM/Composer")
  .getItemInfo("WM/Conductor")
  .getItemInfo("WM/ContentDistributor")
 .getItemInfo("WM/ContentGroupDescription")
  .getItemInfo("WM/Writer")
  .getItemInfo("WM/Genre")
  .getItemInfo("WM/GenreID")
  .getItemInfo("WM/InitialKey")
  .getItemInfo("WM/Language")
  .getItemInfo("WM/Lyrics")
  .getItemInfo("WM/MCDI")
  .getItemInfo("WM/MediaClassPrimaryID")
  .getItemInfo("WM/MediaClassSecondaryID")
  .getItemInfo("WM/Mood")
 .getItemInfo("WM/ParentalRating")
  .getItemInfo("WM/Period")
  .getItemInfo("WM/ProtectionType")
  .getItemInfo("WM/Provider")
  .getItemInfo("WM/ProviderRating")
 .getItemInfo("WM/ProviderStyle")
 .getItemInfo("WM/Publisher")
  .getItemInfo("WM/SubscriptionContentID")
  .getItemInfo("WM/SubTitle")
  .getItemInfo("WM/TrackNumber")
  .getItemInfo("WM/UniqueFileIdentifier")
  .getItemInfo("WM/WMCollectionGroupID")
  .getItemInfo("WM/WMCollectionID")
  .getItemInfo("WM/WMContentID")
 .getItemInfo("WM/Writer")
  .getItemInfo("WM/Year")

Form1.vb

Imports System.IO
Imports System.Security.Cryptography
Imports System.Windows.Forms.VisualStyles.VisualStyleElement
Public Class Form1

    Private image1 As System.Drawing.Image

    '-------------------------------------------------------
    ' フォーム初期処理
    '-------------------------------------------------------
    Private Sub Form1_Load(ByVal sender As System.Object,
     ByVal e As System.EventArgs) Handles MyBase.Load

        INI()

        Me.KeyPreview = True
        ListView1.View = View.Details
        ListView1.Columns.Add("曲  名", 560, HorizontalAlignment.Left)
        ListView1.Columns.Add("長 さ", 74, HorizontalAlignment.Left)

        Try
            image1 = System.Drawing.Image.FromFile(imgPath)
            PictureBox1.Image = image1
            PictureBox1.Size = New Size(641, 408)
            PictureBox1.Left = 0
            PictureBox1.Top = 30
            PictureBox1.BackColor = Color.Transparent
            PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
            PictureBox1.Visible = True

        Catch ex As Exception

        End Try

    End Sub

    '------------------------------------
    '開く メニュー処理
    '------------------------------------
    Private Sub 開くToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 開くToolStripMenuItem.Click

        '停止しないとカレントリストへ追加できない
        AxWindowsMediaPlayer1.Ctlcontrols.stop()

        Dim ofd As New OpenFileDialog()

        'はじめのファイル名を指定する
        'はじめに「ファイル名」で表示される文字列を指定する

        ofd.FileName = "" '"default.html"
        'はじめに表示されるフォルダを指定する

        '指定しない(空の文字列)の時は、現在のディレクトリが表示される
        ofd.InitialDirectory = defFld

        '[ファイルの種類]に表示される選択肢を指定する
        '指定しないとすべてのファイルが表示される
        ofd.Filter = "すべてのファイル(*.*)|*.*"

        '[ファイルの種類]ではじめに選択されるものを指定する
        '1番目の「すべてのファイル」が選択されているようにする
        ofd.FilterIndex = 1

        'タイトルを設定する
        ofd.Title = "開くファイルを選択してください"

        'ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする
        ofd.RestoreDirectory = True

        '存在しないファイルの名前が指定されたとき警告を表示する
        'デフォルトでTrueなので指定する必要はない
        ofd.CheckFileExists = True

        '存在しないパスが指定されたとき警告を表示する
        'デフォルトでTrueなので指定する必要はない
        ofd.CheckPathExists = True

        '複数のファイルを選択できるようにする
        ofd.Multiselect = True

        'ダイアログを表示する
        If ofd.ShowDialog() = DialogResult.OK Then
            'チェックリストボックスクリア
            'ListView1.Items.Clear()

            'OKボタンがクリックされたとき、選択されたファイル名を表示する
            Dim fn As String
            For Each fn In ofd.FileNames
                Dim LV As New ListViewItem(fn.ToString)
                LV.SubItems.Add("[ ? ]")
                ListView1.Items.Add(LV)
            Next
        End If

        'プレイリストのクリア
        'AxWindowsMediaPlayer1.currentPlaylist.clear()

        '画像の取得
        Try
            image1 = System.Drawing.Image.FromFile(imgPath)
            PictureBox1.Image = image1
            PictureBox1.Size = New Size(641, 408)
            PictureBox1.Left = 0
            PictureBox1.Top = 0
            PictureBox1.BackColor = Color.Transparent
            PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
            PictureBox1.Visible = True
            AxWindowsMediaPlayer1.Controls.Add(PictureBox1)
        Catch ex As Exception

        End Try

        ' プレイリストへ登録
        AxWindowsMediaPlayer1.currentPlaylist.clear()
        For i = 0 To ListView1.Items.Count - 1
            '画像抽出
            Dim tfile = TagLib.File.Create(ListView1.Items(i).SubItems(0).Text)
            If tfile.Tag.Pictures.Length >= 1 Then
                Dim bin = DirectCast(tfile.Tag.Pictures(0).Data.Data, Byte())
                PictureBox1.Image = Image.FromStream(New MemoryStream(bin)).GetThumbnailImage(300, 300, Nothing, System.IntPtr.Zero)

                PictureBox1.Size = New Size(641, 408)
                PictureBox1.Left = 0
                PictureBox1.Top = 0
                PictureBox1.BackColor = Color.Transparent
                PictureBox1.SizeMode = PictureBoxSizeMode.CenterImage '.StretchImage
                PictureBox1.Visible = True
                AxWindowsMediaPlayer1.Controls.Add(PictureBox1)
            End If
            'AxWindowsMediaPlayer1に再生するファイルの登録
            AxWindowsMediaPlayer1.currentPlaylist.appendItem(AxWindowsMediaPlayer1.newMedia(ListView1.Items(i).SubItems(0).Text))
        Next

        '演奏中以外不可
        'For i As Integer = 0 To AxWindowsMediaPlayer1.currentPlaylist.count - 1
        'ListView1.Items(i).SubItems(1).Text = AxWindowsMediaPlayer1.currentPlaylist.Item(i).durationString
        'Next

        '再生
        'AxWindowsMediaPlayer1.Ctlcontrols.play()

    End Sub

    '----------------------------------------
    '演奏中の処理
    '----------------------------------------
    Private Sub AxWindowsMediaPlayer1_PlayStateChange(sender As System.Object, e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange

        '演奏中
        If e.newState = 3 Then
            'Dim artnme As String 'アーティスト名
            'artnme = AxWindowsMediaPlayer1.currentMedia.getItemInfo("Author")
            'タイトル
            Dim title As String
            title = AxWindowsMediaPlayer1.currentMedia.name
            Me.Text = title
            Me.Text = Me.Text + " [ " + AxWindowsMediaPlayer1.Ctlcontrols.currentItem.durationString + " ]"
            'フルパス
            Dim curUrl As String = ""
            curUrl = AxWindowsMediaPlayer1.currentMedia.sourceURL
            For i = 0 To ListView1.Items.Count - 1
                If ListView1.Items(i).SubItems(0).Text = curUrl Then
                    ListView1.Items(i).Selected = True
                    '画像抽出
                    Dim tfile = TagLib.File.Create(ListView1.Items(i).SubItems(0).Text)
                    If tfile.Tag.Pictures.Length >= 1 Then
                        Dim bin = DirectCast(tfile.Tag.Pictures(0).Data.Data, Byte())
                        PictureBox1.Image = Image.FromStream(New MemoryStream(bin)).GetThumbnailImage(300, 300, Nothing, System.IntPtr.Zero)

                        PictureBox1.Size = New Size(641, 408)
                        PictureBox1.Left = 0
                        PictureBox1.Top = 0
                        PictureBox1.BackColor = Color.Transparent
                        PictureBox1.SizeMode = PictureBoxSizeMode.CenterImage '.StretchImage
                        PictureBox1.Visible = True
                        AxWindowsMediaPlayer1.Controls.Add(PictureBox1)
                    End If
                Else
                    ListView1.Items(i).Selected = False
                End If
            Next

            For i As Integer = 0 To AxWindowsMediaPlayer1.currentPlaylist.count - 1
                ListView1.Items(i).SubItems(1).Text = AxWindowsMediaPlayer1.currentPlaylist.Item(i).durationString
            Next

        End If

        '停止
        If e.newState = 1 Then
            Try
                image1 = System.Drawing.Image.FromFile(imgPath)
                PictureBox1.Image = image1
                PictureBox1.Size = New Size(641, 408)
                PictureBox1.Left = 0
                PictureBox1.Top = 0
                PictureBox1.BackColor = Color.Transparent
                PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
                PictureBox1.Visible = True
                AxWindowsMediaPlayer1.Controls.Add(PictureBox1)
            Catch ex As Exception

            End Try


        End If

    End Sub

    '--------------------------------
    '終了
    '--------------------------------
    Private Sub 終了ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 終了ToolStripMenuItem.Click

        End

    End Sub

    '--------------------------------
    '操作
    '--------------------------------
    Private Sub 再生ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 再生ToolStripMenuItem.Click
        '再生しているオーディオを再生する
        AxWindowsMediaPlayer1.Ctlcontrols.play()
    End Sub

    Private Sub 一時停止ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 一時停止ToolStripMenuItem.Click
        '再生しているオーディオを一時停止する
        AxWindowsMediaPlayer1.Ctlcontrols.pause()

    End Sub

    Private Sub 停止ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 停止ToolStripMenuItem.Click
        '再生しているオーディオを停止する
        AxWindowsMediaPlayer1.Ctlcontrols.stop()
        Try
            image1 = System.Drawing.Image.FromFile(imgPath)
            PictureBox1.Image = image1
            PictureBox1.Size = New Size(641, 408)
            PictureBox1.Left = 0
            PictureBox1.Top = 0
            PictureBox1.BackColor = Color.Transparent
            PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
            PictureBox1.Visible = True
            AxWindowsMediaPlayer1.Controls.Add(PictureBox1)
        Catch ex As Exception

        End Try


    End Sub

    Private Sub 前へToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 前へToolStripMenuItem.Click
        '再生しているオーディオを前へ移動する
        AxWindowsMediaPlayer1.Ctlcontrols.previous()

    End Sub

    Private Sub 次へToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles 次へToolStripMenuItem1.Click
        '再生しているオーディオを次へ移動する
        AxWindowsMediaPlayer1.Ctlcontrols.next()

    End Sub

    Private Sub 早送りToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 早送りToolStripMenuItem.Click
        '再生しているオーディオを早送りする
        AxWindowsMediaPlayer1.Ctlcontrols.fastForward()

    End Sub

    Private Sub ListView1_Click(sender As Object, e As EventArgs) Handles ListView1.Click

        If ListView1.Items.Count > 0 Then
            Dim title As String = ListView1.FocusedItem.Text()
            Dim Media1 As WMPLib.IWMPMedia
            For i As Integer = 0 To AxWindowsMediaPlayer1.currentPlaylist.count - 1
                Media1 = AxWindowsMediaPlayer1.currentPlaylist.Item(i)
                If Media1.sourceURL = title Then
                    AxWindowsMediaPlayer1.Ctlcontrols.playItem(Media1)
                    'AxWindowsMediaPlayer1.Ctlcontrols.play()
                    Exit For
                End If
            Next
        End If

    End Sub

    Private Sub リスト消去ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles リスト消去ToolStripMenuItem.Click
        'チェックリストボックスクリア
        AxWindowsMediaPlayer1.Ctlcontrols.stop()
        ListView1.Items.Clear()
        AxWindowsMediaPlayer1.currentPlaylist.clear()

    End Sub

    Private Sub 設定登録ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 設定登録ToolStripMenuItem.Click

        Dim iform2 As New Form2
        iform2.ShowDialog()

    End Sub

    Private Sub リスト保存ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles リスト保存ToolStripMenuItem.Click

        'SaveFileDialogクラスのインスタンスを作成
        Dim sfd As New SaveFileDialog()

        'はじめのファイル名を指定する
        'はじめに「ファイル名」で表示される文字列を指定する
        sfd.FileName = "新しいファイル.lst"
        'はじめに表示されるフォルダを指定する
        '指定しない(空の文字列)の時は、現在のディレクトリが表示される
        sfd.InitialDirectory = savFld
        '[ファイルの種類]に表示される選択肢を指定する
        sfd.Filter = "lstファイル(*.lst)|*.lst"
        '[ファイルの種類]ではじめに選択されるものを指定する
        '1番目の「すべてのファイル」が選択されているようにする
        sfd.FilterIndex = 1
        'タイトルを設定する
        sfd.Title = "保存先のファイルを選択してください"
        'ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする
        sfd.RestoreDirectory = True
        '既に存在するファイル名を指定したとき警告する
        'デフォルトでTrueなので指定する必要はない
        sfd.OverwritePrompt = True
        '存在しないパスが指定されたとき警告を表示する
        'デフォルトでTrueなので指定する必要はない
        sfd.CheckPathExists = True

        Dim n2 As Integer = FreeFile()
        Dim st As String



        'ダイアログを表示する
        If sfd.ShowDialog() = DialogResult.OK Then

            FileOpen(n2, sfd.FileName, OpenMode.Output)
            For i = 0 To ListView1.Items.Count - 1
                'ファイル存在チェック
                If System.IO.File.Exists(ListView1.Items(i).SubItems(0).Text) = True Then
                    PrintLine(n2, ListView1.Items(i).SubItems(0).Text)
                Else
                    'ファイルが存在しません。登録不可。
                End If
            Next
            FileClose(n2)

            'OKボタンがクリックされたとき、選択されたファイル名を表示する
            MsgBox(sfd.FileName + " 保存されました。")
        End If

    End Sub

    Private Sub リスト読込ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles リスト読込ToolStripMenuItem.Click

        '停止しないとカレントリストへ追加できない
        AxWindowsMediaPlayer1.Ctlcontrols.stop()

        Dim ofd As New OpenFileDialog()

        'はじめのファイル名を指定する
        'はじめに「ファイル名」で表示される文字列を指定する

        ofd.FileName = "" '"default.html"
        'はじめに表示されるフォルダを指定する

        '指定しない(空の文字列)の時は、現在のディレクトリが表示される
        ofd.InitialDirectory = savFld

        '[ファイルの種類]に表示される選択肢を指定する
        '指定しないとすべてのファイルが表示される
        ofd.Filter = "lstファイル(*.lst)|*.lst"

        '[ファイルの種類]ではじめに選択されるものを指定する
        '1番目の「すべてのファイル」が選択されているようにする
        ofd.FilterIndex = 1

        'タイトルを設定する
        ofd.Title = "開くファイルを選択してください"

        'ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする
        ofd.RestoreDirectory = True

        '存在しないファイルの名前が指定されたとき警告を表示する
        'デフォルトでTrueなので指定する必要はない
        ofd.CheckFileExists = True

        '存在しないパスが指定されたとき警告を表示する
        'デフォルトでTrueなので指定する必要はない
        ofd.CheckPathExists = True

        '複数のファイルを選択できるようにする
        ofd.Multiselect = True

        'ダイアログを表示する
        If ofd.ShowDialog() = DialogResult.OK Then
            'チェックリストボックスクリア
            ListView1.Items.Clear()

            'ファイルをShift-JISコードとして開く
            Dim sr As New System.IO.StreamReader(ofd.FileName, System.Text.Encoding.GetEncoding("shift_jis"))
            '内容を一行ずつ読み込む
            While sr.Peek() > -1
                Dim LV As New ListViewItem(sr.ReadLine())
                LV.SubItems.Add("[ ? ]")
                ListView1.Items.Add(LV)
            End While
            '閉じる
            sr.Close()

            'OKボタンがクリックされたとき、選択されたファイル名を表示する
            MsgBox("取り込みました")

        End If

        'プレイリストのクリア
        AxWindowsMediaPlayer1.currentPlaylist.clear()

        '画像の取得
        Try
            image1 = System.Drawing.Image.FromFile(imgPath)
            PictureBox1.Image = image1
            PictureBox1.Size = New Size(641, 408)
            PictureBox1.Left = 0
            PictureBox1.Top = 0
            PictureBox1.BackColor = Color.Transparent
            PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
            PictureBox1.Visible = True
            AxWindowsMediaPlayer1.Controls.Add(PictureBox1)

        Catch ex As Exception

        End Try

        ' プレイリストへ登録
        AxWindowsMediaPlayer1.currentPlaylist.clear()
        For i = 0 To ListView1.Items.Count - 1
            'AxWindowsMediaPlayer1に再生するファイルの登録
            AxWindowsMediaPlayer1.currentPlaylist.appendItem(AxWindowsMediaPlayer1.newMedia(ListView1.Items(i).SubItems(0).Text))
        Next

        '演奏中以外不可
        'For i As Integer = 0 To AxWindowsMediaPlayer1.currentPlaylist.count - 1
        'ListView1.Items(i).SubItems(1).Text = AxWindowsMediaPlayer1.currentPlaylist.Item(i).durationString
        'Next

        '再生
        'AxWindowsMediaPlayer1.Ctlcontrols.play()
    End Sub

End Class

Form2.vb

Imports System.IO
Imports System.Net.WebRequestMethods
Imports System.Windows.Forms.VisualStyles.VisualStyleElement
Imports Microsoft.SqlServer

Public Class Form2
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim st As String

        Me.KeyPreview = True

        Try

            n = FreeFile()
            FileOpen(n, stCurrentDir & "\PARA.ini", OpenMode.Input)
            TextBox1.Text = LineInput(n)
            TextBox2.Text = LineInput(n)
            TextBox3.Text = LineInput(n)
            FileClose(n)

        Catch

            FileOpen(n2, stCurrentDir & "\PARA.ini", OpenMode.Output)
            st = ""
            PrintLine(n2, st)

            PrintLine(n2, st)

            PrintLine(n2, st)

            PrintLine(n2, st)

            PrintLine(n2, st)

            PrintLine(n2, st)

            PrintLine(n2, st)

            FileClose(n2)


        End Try


    End Sub

    '-------------------------------------------------------
    '登録ボタン処理
    '-------------------------------------------------------
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'フォルダー存在チェック
        If System.IO.Directory.Exists(TextBox1.Text) = True Then
            'Console.WriteLine("ディレクトリが存在します")
        Else
            MsgBox("既定ディレクトリが存在しません。登録不可。")
            Exit Sub
            'ディレクトリを作成
            'System.IO.Directory.CreateDirectory(textbox1.text)
        End If

        'ファイル存在チェック
        If System.IO.File.Exists(TextBox2.Text) = True Then
            'Console.WriteLine("ファイルが存在します")
        Else
            MsgBox("ファイルが存在しません。登録不可。")
        End If

        'フォルダー存在チェック
        If System.IO.Directory.Exists(TextBox3.Text) = True Then
            'Console.WriteLine("ディレクトリが存在します")
        Else
            MsgBox("保存ディレクトリが存在しません。登録不可。")
            Exit Sub
            'ディレクトリを作成
            'System.IO.Directory.CreateDirectory(textbox1.text)
        End If

        Dim n2 As Integer = FreeFile()
        Dim st As String

        FileOpen(n2, stCurrentDir & "\PARA.ini", OpenMode.Output)
        st = TextBox1.Text
        PrintLine(n2, st)
        st = TextBox2.Text
        PrintLine(n2, st)
        st = TextBox3.Text
        PrintLine(n2, st)
        FileClose(n2)

        defFld = TextBox1.Text
        imgPath = TextBox2.Text
        savFld = TextBox3.Text

    End Sub

    '-------------------------------------------------------
    '終了ボタン処理
    '-------------------------------------------------------
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Me.Close()

    End Sub

    '-------------------------------------------------------
    'keyDown処理
    '-------------------------------------------------------
    Private Sub Form2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

        If e.KeyCode = Keys.End Then
            Me.Close()
        End If

    End Sub

    '-------------------------------------------------------
    'keyPress処理
    '-------------------------------------------------------
    Private Sub Form2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress

        If e.KeyChar = Chr(13) Then
            SendKeys.Send("{TAB}")
            e.Handled = True
        End If

    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

        'FolderBrowserDialogクラスのインスタンスを作成
        Dim fbd As New FolderBrowserDialog

        '上部に表示する説明テキストを指定する
        fbd.Description = "フォルダを指定してください。"
        'ルートフォルダを指定する
        'デフォルトでDesktop
        fbd.RootFolder = Environment.SpecialFolder.Desktop
        '最初に選択するフォルダを指定する
        'RootFolder以下にあるフォルダである必要がある
        fbd.SelectedPath = "C:\Windows"
        'ユーザーが新しいフォルダを作成できるようにする
        'デフォルトでTrue
        fbd.ShowNewFolderButton = True

        'ダイアログを表示する
        If fbd.ShowDialog(Me) = DialogResult.OK Then
            '選択されたフォルダを表示する
            TextBox1.Text = fbd.SelectedPath
        End If

    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

        Dim ofd As New OpenFileDialog()

        'はじめのファイル名を指定する
        'はじめに「ファイル名」で表示される文字列を指定する

        ofd.FileName = "" '"default.html"
        'はじめに表示されるフォルダを指定する

        '指定しない(空の文字列)の時は、現在のディレクトリが表示される
        ofd.InitialDirectory = ""

        '[ファイルの種類]に表示される選択肢を指定する
        '指定しないとすべてのファイルが表示される
        ofd.Filter = "すべてのファイル(*.*)|*.*"

        '[ファイルの種類]ではじめに選択されるものを指定する
        '1番目の「すべてのファイル」が選択されているようにする
        ofd.FilterIndex = 1

        'タイトルを設定する
        ofd.Title = "開くファイルを選択してください"

        'ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする
        ofd.RestoreDirectory = True

        '存在しないファイルの名前が指定されたとき警告を表示する
        'デフォルトでTrueなので指定する必要はない
        ofd.CheckFileExists = True

        '存在しないパスが指定されたとき警告を表示する
        'デフォルトでTrueなので指定する必要はない
        ofd.CheckPathExists = True

        '複数のファイルを選択できるようにする
        ofd.Multiselect = True

        'ダイアログを表示する
        If ofd.ShowDialog() = DialogResult.OK Then

            'OKボタンがクリックされたとき、選択されたファイル名を表示する
            TextBox2.Text = ofd.FileName

        End If

    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click

        'FolderBrowserDialogクラスのインスタンスを作成
        Dim fbd As New FolderBrowserDialog

        '上部に表示する説明テキストを指定する
        fbd.Description = "フォルダを指定してください。"
        'ルートフォルダを指定する
        'デフォルトでDesktop
        fbd.RootFolder = Environment.SpecialFolder.Desktop
        '最初に選択するフォルダを指定する
        'RootFolder以下にあるフォルダである必要がある
        fbd.SelectedPath = "C:\Windows"
        'ユーザーが新しいフォルダを作成できるようにする
        'デフォルトでTrue
        fbd.ShowNewFolderButton = True

        'ダイアログを表示する
        If fbd.ShowDialog(Me) = DialogResult.OK Then
            '選択されたフォルダを表示する
            TextBox3.Text = fbd.SelectedPath
        End If

    End Sub

End Class

Module.vb

Module Module1

    Public F1 As Form1

    Public defFld As String
    Public imgPath As String = ""
    Public savFld As String
    Public n As Integer = FreeFile()
    Public n2 As Integer = FreeFile()
    Public stCurrentDir As String = ""

    Public Sub INI()

        stCurrentDir = System.IO.Directory.GetCurrentDirectory()
        Try
            n = FreeFile()
            FileOpen(n, stCurrentDir & "\PARA.ini", OpenMode.Input)

            defFld = LineInput(n)
            imgPath = LineInput(n)
            savFld = LineInput(n)
            FileClose(n)

        Catch
            MsgBox("設定ファイルエラー:エラーNO:" &
            Err.Number & vbCr & Err.Description & vbCr &
            "設定してください。")

            FileOpen(n2, stCurrentDir & "\PARA.ini", OpenMode.Output)
            Dim st = ""
            PrintLine(n2, st)
            PrintLine(n2, st)
            PrintLine(n2, st)
            PrintLine(n2, st)

            FileClose(n2)

        End Try

    End Sub
End Module

-windows

PAGE TOP