VB.NETでMediaPlayer
環境 Windows11 23H2 & Visual Studio 2022 & axWindowsMediaPlayerコントロールを利用。
TaglibSharp Mediaファイルからアルバム情報を取得します。
メイン画面
![](https://ssksvr.com/wp-content/uploads/2024/03/image-41-2-1024x424.jpg)
処理メニュー画面
![](https://ssksvr.com/wp-content/uploads/2024/03/image-41.png)
開くメニュー画面
![](https://ssksvr.com/wp-content/uploads/2024/03/image-42.png)
複数選択可能です。
開くメニュー終了後
![](https://ssksvr.com/wp-content/uploads/2024/03/image-43-1024x422.jpg)
プレイリストに追加されます。繰り返し行うことでプレイリストに追加されます。音声ファイルのtag情報よりアルバム画像を表示します。
操作メニュー画面
![](https://ssksvr.com/wp-content/uploads/2024/03/image-43.png)
リスト処理メニュー画面
![](https://ssksvr.com/wp-content/uploads/2024/03/image-44.png)
リスト消去は、プレイリストを消去します。
リスト保存処理
![](https://ssksvr.com/wp-content/uploads/2024/03/image-45.png)
ファイル名を指定しプレイリストを保存します。フォルダーは、既定フォルダーが最初に指定されます。
リスト読込処理
![](https://ssksvr.com/wp-content/uploads/2024/03/image-46.png)
ファイル名を指定しプレイリストを読込ます。フォルダーは、既定フォルダーが最初に指定されます。
設定メニュー処理
![](https://ssksvr.com/wp-content/uploads/2024/03/image-47.png)
![](https://ssksvr.com/wp-content/uploads/2024/03/image-48.png)
既定フォルダーは、mediaファイルを開く当初フォルダーとなります。画像ファイルは、tagファイルより取得できないとき、表示される画像です。保存フォルダーは、プレイリストの既定保存フォダーです。
ソリューション
![](https://ssksvr.com/wp-content/uploads/2024/03/image-49.png)
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