Imports System
Imports System.IO
Imports System.Windows.Forms.OpenFileDialog
Imports System.Windows.Forms.DialogResult

Public Class Dialog

    ''' <summary>
    ''' ファイルを指定するダイアログを起動し、ファイルパスを取得します
    ''' </summary>
    ''' <param name="myFilePath">ダイアログによって選択されたファイルパスの保存先を指定します</param>
    ''' <param name="myDefaultFileName">初期表示されるファイル名を指定します</param>
    ''' <param name="myDefaultFolderPath">初期表示されるフォルダパスを指定します</param>
    ''' <returns>処理結果(True Or False)</returns>
    Public Shared Function OpenFileDialog(ByRef myFilePath As String, ByVal myDefaultFileName As String, _
                                          ByVal myDefaultFolderPath As String) As Boolean
        Try

            '指定されたフォルダが存在するか調べる
            If IO.Directory.Exists(myDefaultFolderPath) = False Then
                '異常終了
                Return False
            End If

            '必要変数の定義
            Dim myOpenFileDialog As New OpenFileDialog()

            'パラメータを設定する
            With myOpenFileDialog
                .FileName = myDefaultFileName
                .InitialDirectory = myDefaultFolderPath
                .Filter = "すべてのファイル(*.*)|*.*"
                .Title = "ファイルを選択して下さい"
            End With

            'ダイアログを表示する
            If myOpenFileDialog.ShowDialog() = DialogResult.OK Then
                'OKボタンがクリックされたとき
                '選択されたファイル名を表示する
                myFilePath = myOpenFileDialog.FileName
            End If

            '正常終了
            Return True

        Catch ex As Exception

            Throw ex

        End Try
    End Function

End Class


Imports System
Imports System.IO
Imports System.Diagnostics.Process
Imports System.Diagnostics.ProcessStartInfo
Imports System.Diagnostics.ProcessWindowStyle

Public Class PDF

    ''' <summary>
    ''' PDFをWindowsに紐付けられているプロセスから起動します
    ''' </summary>
    ''' <param name="myFilePath">開くPDFファイルを指定します</param>
    ''' <returns>処理結果(True Or False)</returns>
    Public Shared Function OpenPDF(ByVal myFilePath As String) As Boolean

        Try

            '指定されているファイルがPDFファイル形式が調べる
            If myFilePath.EndsWith(".pdf") = False AndAlso myFilePath.EndsWith(".PDF") = False Then
                '異常終了
                Return False
            End If

            '指定されているファイルが存在するか調べる
            If IO.File.Exists(myFilePath) = False Then
                '異常終了
                Return False
            End If

            '必要変数の定義
            Dim myProcess As New Process
            Dim myProcessStartInfo As New ProcessStartInfo

            'プロセス起動時の情報を設定
            With myProcessStartInfo
                .FileName = myFilePath
                .CreateNoWindow = False
                .WindowStyle = ProcessWindowStyle.Normal
            End With

            '設定した起動時の情報をプロセスに紐付ける
            myProcess.StartInfo = myProcessStartInfo

            'PDFファイルを開く
            If myProcess.Start() = False Then
                '異常終了
                Return True
            End If

            '正常終了
            Return True

        Catch ex As Exception

            Throw ex

        End Try

    End Function

End Class


Imports System
Imports System.IO
Imports System.Array
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Binary

Public Class Binary

    ''' <summary>
    ''' オブジェクトの内容をバイナリファイルから読み込み復元する
    ''' </summary>
    ''' <param name="myFilePath">読み込むファイル名を指定します</param>
    ''' <param name="myObject">復元先のオブジェクトを指定します</param>
    ''' <returns>処理結果(True Or False)</returns>
    Public Shared Function LoadFromBinaryFile(ByVal myFilePath As String, ByRef myObject As Object) As Boolean

        Try

            '指定されたファイルが存在するか調べる
            If IO.File.Exists(myFilePath) = False Then
                '異常終了
                Return False
            End If

            '必要変数の定義
            Dim myByte As Byte()

            '指定されたファイルを読み込む
            Dim myFileStream As New FileStream(myFilePath, FileMode.Open, FileAccess.Read)

            'Byte配列の長さを設定
            myByte = New Byte(myFileStream.Length - 1) {}

            'ファイルの内容をバイナリデータとして読み込む
            myFileStream.Read(myByte, 0, myFileStream.Length - 1)

            'リソースを解放
            myFileStream.Close()

            'Byte配列をオブジェクトに格納
            myObject = myByte

            '正常終了
            Return True

        Catch ex As Exception

            Throw ex

        End Try

    End Function

    ''' <summary>
    ''' オブジェクトの内容をファイルに保存する
    ''' </summary>
    ''' <param name="myObject">保存するオブジェクトを指定します</param>
    ''' <param name="myFilePath">保存先のファイル名指定します</param>
    ''' <returns>処理結果(True Or False)</returns>
    Public Shared Function SaveToBinaryFile(ByVal myObject As Object, ByVal myFilePath As String) As Boolean

        Try

            '指定されたファイルが存在するか調べる
            If IO.File.Exists(myFilePath) = False Then
                '異常終了
                Return False
            End If

            If Not (TypeOf (myObject) Is System.Byte()) Then
                '異常終了
                Return False
            End If

            '必要変数の定義
            Dim myByte As Byte() = CType(myObject, Byte())

            '指定されたファイルを読み込む
            Dim myFileStream As New FileStream(myFilePath, FileMode.Create, FileAccess.Write)

            'ファイルの内容をバイナリデータとして読み込む
            myFileStream.Write(myByte, 0, myByte.Length)

            'リソースを解放
            myFileStream.Close()

            '正常終了
            Return True

        Catch ex As Exception

            Throw ex

        End Try

    End Function

End Class