NonSoft

CryptMin暗号化ライブラリ(VB6版)サンプルAP


 サンプル(ソース/コード)
このサンプルはCryptMin暗号化ライブラリ(VB6版)のサンプルAPです。

★CryptMin暗号化ライブラリ(VB6版)サンプルAP(画面イメージ) CryptMin暗号化ライブラリ(VB6版)サンプルAP
★CryptMin暗号化ライブラリ(VB6版)サンプルAP(MainForm.frm)
Option Explicit

'**********************************************************************
' 機能名    : 暗号化サンプルAP
'
' 機能説明  : 各種暗号化/複合化をテストする
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'           : このプログラムは、日本国著作権法および国際条約により保護
'           : されています。このプログラムの全部または一部を無断で複製
'           : したり、無断で複製物を頒布すると、著作権の侵害となります
'           : のでご注意ください。
'**********************************************************************
'**********************************************************************
' 共通定数定義
'**********************************************************************
'**********************************************************************
' 共通変数定義
'**********************************************************************
' 暗号化DLLクラスの定義
Private cryptMin As Object
Private cryptDes As Object
Private cryptB64 As Object
Private progress As Object

'**********************************************************************
' メソッド
'**********************************************************************
' @(f)
' 関数名    : Form_Load
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : フォームロード
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub Form_Load()
    On Error GoTo ErrHandler
    Dim fso As FileSystemObject
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    ' カレントフォルダの変更
    SetCurrentDirectory App.Path
    
    ' CryptMin.dllの存在チェック
    On Error Resume Next
    If CreateObject("CryptMin.CryptMinClass") Is Nothing Then
        If fso.FileExists("CryptMin.dll") Then
            ' 暗号化DLLのレジストリ登録
            Shell "regsvr32 /s CryptMin.dll", vbHide
        Else
            ' 暗号化DLLをEXEと同じフォルダに置いてください。
            MsgBox _
            "CryptMin.dllが見つかりませんでした。" & vbCrLf & vbCrLf & _
            "CryptMin.dllを" & vbCrLf & _
            "[" & App.Path & "]" & vbCrLf & _
            "に置いてください。"
            End
        End If
    End If
    On Error GoTo ErrHandler

    ' 暗号化DLLのオブジェクト生成(必須)
    Set cryptMin = CreateObject("CryptMin.CryptMinClass")
    Set cryptDes = CreateObject("CryptMin.CryptDesClass")
    Set cryptB64 = CreateObject("CryptMin.CryptB64Class")
    Set progress = CreateObject("CryptMin.ProgressClass")
    ' 進捗メッセージの表示有無と表示開始までの経過時間設定
    Dim flag As Boolean
    flag = False
    If ProgressCheck.Value = 1 Then flag = True
    progress.ProgressInit Me.hWnd, flag, Val(ProgressDelayText)

    
    ' ラジオボタンのデフォルト設定
    OrgOption(0).Value = True
    EncodeOption(0).Value = True
    CryptOption(2) = True
    
    Exit Sub
ErrHandler:
    If Err.Number = 339 Then
        MsgBox "システムエラー" & vbCrLf & _
        "VB6ランタイムがインストールされていない可能性があります。"
    Else
        MsgBox "システムエラー" & vbCrLf & Err.Description
    End If
    Exit Sub
End Sub

' @(f)
' 関数名    : Form_Paint
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : フォーム描画時の処理
'
' 備考      : 進捗メッセージが表示中の時は最善面に表示する
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub Form_Paint()
    On Error GoTo ErrHandler
    
    If progress Is Nothing = False Then
        ' 進捗メッセージが表示中の時は最善面に表示する
        progress.WindowTopMost
    End If
    
    Exit Sub
ErrHandler:
    'MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : Command1_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 暗号化ボタンクリック
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub Command1_Click()
    On Error GoTo ErrHandler
    
    Dim fileNo As Integer
    Dim inpStr As String
    Dim outStr As String
    Dim inpByte() As Byte
    Dim outByte() As Byte
    Dim kenByte() As Byte
    Dim opt(0 To 1) As Boolean
    Dim fso As New FileSystemObject
    Dim canFlag As Boolean
    Dim msg As String

    ' 暗号化キー入力チェック
    If KeyText(0).Text = "" Then
        MsgBox "暗号化キーを入力してください。"
        Exit Sub
    End If
    
    ' ファイル名入力チェック
    If (OrgOption(1).Value = True And OrgFile.Text = "") Or _
       (EncodeOption(1).Value = True And EncodeFile.Text = "") Then
        MsgBox "ファイル名を入力してください。"
        OrgFile.SetFocus
        Exit Sub
    End If

    opt(0) = OrgOption(0).Value
    opt(1) = EncodeOption(0).Value
    EncodeText.Text = ""
    OrgOption(0).Value = opt(0)
    OrgOption(1).Value = Not opt(0)
    EncodeOption(0).Value = opt(1)
    EncodeOption(1).Value = Not opt(1)
    
    ' データ入力処理
    canFlag = False
    inpStr = ""
    outStr = ""
    ReDim inpByte(-1 To -1)
    ReDim outByte(-1 To -1)
    If OrgOption(0).Value = True Then
        ' 入力がテキストエリアの時
        If OrgText.Text = "" Then
            MsgBox "オリジナルの文字列を入力してください。"
            Exit Sub
        End If
        inpStr = OrgText.Text
        inpByte = StrConv(inpStr, vbFromUnicode)
        
    Else
        ' 入力がファイル名エリアの時
        fileNo = FreeFile
        Open OrgFile.Text For Binary As fileNo
        If LOF(fileNo) <= 0 Then
            Close fileNo
            MsgBox "オリジナルのファイルが存在しないか0バイトです。"
            Exit Sub
        Else
            ReDim inpByte(LOF(fileNo) - 1)
            Get fileNo, , inpByte
            Close fileNo
            inpStr = StrConv(inpByte, vbUnicode)
        End If
    End If
    
    ' 進捗メッセージを表示する
    progress.ProgressRange 0, 0
    progress.ProgressDsp 0, , "暗号化中"
    canFlag = progress.GetCancelFlag
    
    ' 暗号化処理
    If UBound(inpByte) >= 0 Then
        If CryptOption(0) Then
            ' DES+BASE64による暗号化
            If canFlag = False Then
                progress.ProgressRange 1, 80
                kenByte = cryptDes.CryptDesBytes(inpByte, True, KeyText(0).Text)
                canFlag = progress.GetCancelFlag
                If canFlag = False Then
                    progress.ProgressRange 80, 99
                    outStr = cryptB64.Base64Encode(kenByte)
                    canFlag = progress.GetCancelFlag
                    outByte = StrConv(outStr, vbFromUnicode)
                End If
            End If
        ElseIf CryptOption(1) Then
            ' トリプルDES+BASE64による暗号化
            If canFlag = False Then
                progress.ProgressRange 1, 80
                kenByte = cryptDes.Crypt3DesBytes(inpByte, True, _
                    KeyText(0).Text, KeyText(1).Text, KeyText(2).Text)
                canFlag = progress.GetCancelFlag
                If canFlag = False Then
                    progress.ProgressRange 80, 99
                    outStr = cryptB64.Base64Encode(kenByte)
                    canFlag = progress.GetCancelFlag
                    outByte = StrConv(outStr, vbFromUnicode)
                End If
            End If
        Else
            ' 独自の暗号化
            If canFlag = False Then
                progress.ProgressRange 1, 99
                kenByte = cryptMin.CryptMinBytes(inpByte, True, KeyText(0).Text)
                outByte = kenByte
                canFlag = progress.GetCancelFlag
                If UBound(outByte) >= 0 Then
                    outStr = StrConv(outByte, vbUnicode)
                End If
            End If
        End If
    End If
    
    ' エラーチェック
    If canFlag Then
        ' キャンセルされた場合は以降の処理を中止する
        ' 進捗メッセージを閉じる
        progress.ProgressDsp 100
        MsgBox "暗号化を中止しました。"
        Exit Sub
    Else
        If UBound(outByte) < 0 Then
            ' 進捗メッセージを閉じる
            progress.ProgressDsp 100
            ' エラーメッセージ表示
            MsgBox "エラーが発生しました。" & vbCrLf & _
                   "入力データが正しい事を確認してください。"
            Exit Sub
        Else
            If KenshouCheck.Value = 1 Then
                ' 検証開始
                ' 進捗メッセージを閉じる
                progress.ProgressDsp 100
                progress.ProgressDsp 0, , "検証中", True
                progress.ProgressRange 1, 99
                msg = KenshouFunc(inpByte, kenByte)
                If msg <> "" Then
                    ' 進捗メッセージを閉じる
                    progress.ProgressDsp 100
                    MsgBox msg
                    Exit Sub
                End If
            End If
        End If
    End If
    
    ' データ出力処理
    If EncodeOption(0).Value = True Then
        ' 出力がテキストエリアの時
        EncodeText.Text = outStr
        ' 進捗メッセージを閉じる
        progress.ProgressDsp 100
    Else
        If UBound(outByte) >= 0 Then
            ' 出力がファイル名エリアの時
            If fso.FileExists(EncodeFile.Text) Then
                fso.DeleteFile EncodeFile.Text
            End If
            fileNo = FreeFile
            Open EncodeFile.Text For Binary As fileNo
            Put fileNo, , outByte
            Close fileNo
        End If
        ' 進捗メッセージを閉じる
        progress.ProgressDsp 100
        MsgBox "暗号化が完了しました。"
    End If
    
    Exit Sub
ErrHandler:
    ' 進捗メッセージを閉じる
    progress.ProgressDsp 100
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : CryptOption_Click
'
' 返り値    : エラーメッセージ(正常時は空文字列””)
'
' 引き数    : orgByte (i) : オリジナルデータ
'           : kenByte (i) : オリジナルデータを暗号化したデータ
'
' 機能説明  : 暗号化と複合化の検証
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Function KenshouFunc(orgByte() As Byte, kenByte() As Byte) As String
    On Error GoTo ErrHandler
    Dim i As Long
    Dim tmpByte() As Byte
    Dim canFlag As Boolean
    KenshouFunc = ""
    
    If CryptOption(0) Then
        ' DESによる復号化の検証
        tmpByte = cryptDes.CryptDesBytes(kenByte, False, KeyText(0).Text)
        canFlag = progress.GetCancelFlag
    ElseIf CryptOption(1) Then
        ' トリプルDESによる復号化の検証
        tmpByte = cryptDes.Crypt3DesBytes(kenByte, False, _
            KeyText(0).Text, KeyText(1).Text, KeyText(2).Text)
        canFlag = progress.GetCancelFlag
    Else
        ' 独自の復号化による検証
        tmpByte = cryptMin.CryptMinBytes(kenByte, False, KeyText(0).Text)
        canFlag = progress.GetCancelFlag
    End If
    
    If canFlag Then
        ' キャンセルされた場合は以降の処理を中止する
        KenshouFunc = "検証を中止しました。"
        Exit Function
    Else
        ' 検証エラーチェック
        For i = 0 To UBound(orgByte)
            If orgByte(i) <> tmpByte(i) Then
                KenshouFunc = "検証失敗(復号データ誤り)" & vbCrLf & _
                              "暗号化処理で原因不明のエラーが発生しました。"
                Exit Function
            End If
        Next i
    End If

    Exit Function
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Function
End Function

' @(f)
' 関数名    : Command2_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 複合化ボタンクリック
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub Command2_Click()
    On Error GoTo ErrHandler
    
    Dim fileNo As Integer
    Dim inpStr As String
    Dim outStr As String
    Dim inpByte() As Byte
    Dim outByte() As Byte
    Dim tmpByte() As Byte
    Dim opt(0 To 1) As Boolean
    Dim fso As New FileSystemObject
    Dim canFlag As Boolean
    
    ' 暗号化キー入力チェック
    If KeyText(0).Text = "" Then
        MsgBox "暗号化キーを入力してください。"
        Exit Sub
    End If
    
    ' ファイル名入力チェック
    If (OrgOption(1).Value = True And OrgFile.Text = "") Or _
       (EncodeOption(1).Value = True And EncodeFile.Text = "") Then
        MsgBox "ファイル名を入力してください。"
        OrgFile.SetFocus
        Exit Sub
    End If
    
    opt(0) = OrgOption(0).Value
    opt(1) = EncodeOption(0).Value
    OrgText.Text = ""
    OrgOption(0).Value = opt(0)
    OrgOption(1).Value = Not opt(0)
    EncodeOption(0).Value = opt(1)
    EncodeOption(1).Value = Not opt(1)
    
    ' データ入力処理
    canFlag = False
    inpStr = ""
    outStr = ""
    ReDim inpByte(-1 To -1)
    ReDim outByte(-1 To -1)
    If EncodeOption(0).Value = True Then
        ' 入力がテキストエリアの時
        If EncodeText.Text = "" Then
            MsgBox "暗号化した文字列を入力してください。"
            Exit Sub
        End If
        inpStr = EncodeText.Text
        inpByte = StrConv(inpStr, vbFromUnicode)
        
    Else
        ' 入力がファイル名エリアの時
        fileNo = FreeFile
        Open EncodeFile.Text For Binary As fileNo
        If LOF(fileNo) <= 0 Then
            Close fileNo
            MsgBox "暗号化したファイルが存在しないか0バイトです。"
            Exit Sub
        Else
            ReDim inpByte(LOF(fileNo) - 1)
            Get fileNo, , inpByte
            Close fileNo
            inpStr = StrConv(inpByte, vbUnicode)
        End If
    End If
    
    ' 進捗メッセージを表示する
    progress.ProgressRange 0, 0
    progress.ProgressDsp 0, , "復号化中"
    canFlag = progress.GetCancelFlag
    
    ' 復号化処理
    If UBound(inpByte) >= 0 Then
        If CryptOption(0) Then
            ' 文字列のDES+BASE64による復号化
            progress.ProgressRange 1, 20
            tmpByte = cryptB64.Base64Decode(inpStr)
            canFlag = progress.GetCancelFlag
            If canFlag = False Then
                progress.ProgressRange 20, 99
                outByte = cryptDes.CryptDesBytes(tmpByte, False, KeyText(0).Text)
                outStr = StrConv(outByte, vbUnicode)
                canFlag = progress.GetCancelFlag
            End If
        ElseIf CryptOption(1) Then
            ' 文字列のトリプルDES+BASE64による復号化
            progress.ProgressRange 1, 20
            tmpByte = cryptB64.Base64Decode(inpStr)
            canFlag = progress.GetCancelFlag
            If canFlag = False Then
                progress.ProgressRange 20, 99
                outByte = cryptDes.Crypt3DesBytes(tmpByte, False, _
                    KeyText(0).Text, KeyText(1).Text, KeyText(2).Text)
                outStr = StrConv(outByte, vbUnicode)
                canFlag = progress.GetCancelFlag
            End If
        Else
            ' 文字列の独自の復号化
            progress.ProgressRange 1, 99
            outByte = cryptMin.CryptMinBytes(inpByte, False, KeyText(0).Text)
            canFlag = progress.GetCancelFlag
            If UBound(outByte) >= 0 Then
                outStr = StrConv(outByte, vbUnicode)
            End If
        End If
    End If
    
    ' エラーチェック
    If canFlag Then
        ' キャンセルされた場合は以降の処理を中止する
        ' 進捗メッセージを閉じる
        progress.ProgressDsp 100
        MsgBox "暗号化を中止しました。"
        Exit Sub
    Else
        If UBound(outByte) < 0 Then
            ' 進捗メッセージを閉じる
            progress.ProgressDsp 100
            ' エラーメッセージ表示
            MsgBox "エラーが発生しました。" & vbCrLf & _
                   "入力データが正しい事を確認してください。"
            Exit Sub
        End If
    End If
    
    ' データ出力処理
    If OrgOption(0).Value = True Then
        ' 出力がテキストエリアの時
        OrgText.Text = outStr
        ' 進捗メッセージを閉じる
        progress.ProgressDsp 100
    Else
        ' 完了メッセージ表示
        If canFlag Then
            ' 進捗メッセージを閉じる
            progress.ProgressDsp 100
            MsgBox "復号化を中止しました。"
        Else
            If UBound(outByte) >= 0 Then
                ' 出力がファイル名エリアの時
                If fso.FileExists(OrgFile.Text) Then
                    fso.DeleteFile OrgFile.Text
                End If
                fileNo = FreeFile
                Open OrgFile.Text For Binary As fileNo
                Put fileNo, , outByte
                Close fileNo
            End If
            ' 進捗メッセージを閉じる
            progress.ProgressDsp 100
            MsgBox "複合化が完了しました。"
        End If
    End If
    
    Exit Sub
ErrHandler:
    ' 進捗メッセージを閉じる
    progress.ProgressDsp 100
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : OrgSanshou_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : オリジナルファイル参照ボタンクリック
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub OrgSanshou_Click()
    On Error GoTo ErrHandler
    
    CommonDialog1.Filter = "全てのファイル(*.*)|*.*"
    CommonDialog1.CancelError = True
    CommonDialog1.ShowOpen
    OrgFile.Text = CommonDialog1.FileName

    Exit Sub
ErrHandler:
    If Err.Number = cdlCancel Then
        ' コモンダイアログのキャンセルボタンクリック
        Exit Sub
    End If
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : EncodeSanshou_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 暗号化ファイル参照ボタンクリック
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub EncodeSanshou_Click()
    On Error GoTo ErrHandler
    
    CommonDialog1.Filter = "全てのファイル(*.*)|*.*"
    CommonDialog1.CancelError = True
    CommonDialog1.ShowOpen
    EncodeFile.Text = CommonDialog1.FileName

    Exit Sub
ErrHandler:
    If Err.Number = cdlCancel Then
        ' コモンダイアログのキャンセルボタンクリック
        Exit Sub
    End If
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : OrgText_Change
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : オリジナルテキスト変更時
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub OrgText_Change()
    On Error GoTo ErrHandler
    
    OrgOption(0).Value = True
    
    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : EncodeText_Change
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 暗号化テキスト変更時
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub EncodeText_Change()
    On Error GoTo ErrHandler
    
    EncodeOption(0).Value = True

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : OrgText_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : オリジナルテキストクリック
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub OrgText_Click()
    On Error GoTo ErrHandler
    
    OrgOption(0).Value = True

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : EncodeText_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 暗号化テキストクリック
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub EncodeText_Click()
    On Error GoTo ErrHandler
    
    EncodeOption(0).Value = True

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : OrgFile_Change
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : オリジナルファイル変更時
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub OrgFile_Change()
    On Error GoTo ErrHandler
    
    OrgOption(1).Value = True

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : EncodeFile_Change
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 暗号化ファイル変更時
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub EncodeFile_Change()
    On Error GoTo ErrHandler
    
    EncodeOption(1).Value = True

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : OrgFile_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : オリジナルファイルクリック
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub OrgFile_Click()
    On Error GoTo ErrHandler
    
    OrgOption(1).Value = True

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : EncodeFile_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 暗号化ファイルクリック
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub EncodeFile_Click()
    On Error GoTo ErrHandler
    
    EncodeOption(1).Value = True

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : OrgExec_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : オリジナルファイルの実行
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub OrgExec_Click()
    On Error GoTo ErrHandler
    
    ExecuteFile OrgFile.Text

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : EncodeExec_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 暗号化ファイルの実行
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub EncodeExec_Click()
    On Error GoTo ErrHandler
    
    ExecuteFile EncodeFile.Text

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : CryptOption_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 暗号化方式の選択
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub CryptOption_Click(Index As Integer)
    On Error GoTo ErrHandler
    
    If Index <> 1 Then
        KeyText(0).Width = KeyText(2).Left + KeyText(2).Width - KeyText(0).Left
        KeyText(0).Visible = True
        KeyText(1).Visible = False
        KeyText(2).Visible = False
    Else
        KeyText(0).Width = KeyText(2).Width
        KeyText(0).Visible = True
        KeyText(1).Visible = True
        KeyText(2).Visible = True
    End If

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : ProgressCheck_Click
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 進捗表示有無の選択
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub ProgressCheck_Click()
    On Error GoTo ErrHandler
    
    ' 進捗メッセージの表示有無と表示開始までの経過時間設定
    Dim flag As Boolean
    flag = False
    If ProgressCheck.Value = 1 Then flag = True
    progress.ProgressInit Me.hWnd, flag, Val(ProgressDelayText)

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : ProgressDelayText_Change
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 進捗表示開始時間の変更
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub ProgressDelayText_Change()
    On Error GoTo ErrHandler
    
    ' 進捗メッセージの表示有無と表示開始までの経過時間設定
    Dim flag As Boolean
    flag = False
    If ProgressCheck.Value = 1 Then flag = True
    progress.ProgressInit Me.hWnd, flag, Val(ProgressDelayText)

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

' @(f)
' 関数名    : ProgressDelayText_KeyUp
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : 進捗表示開始時間のキーボード入力
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Private Sub ProgressDelayText_KeyUp(KeyCode As Integer, Shift As Integer)
    On Error GoTo ErrHandler
    
    ' 進捗メッセージの表示有無と表示開始までの経過時間設定
    Dim flag As Boolean
    flag = False
    If ProgressCheck.Value = 1 Then flag = True
    progress.ProgressInit Me.hWnd, flag, Val(ProgressDelayText)

    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub

★CryptMin暗号化ライブラリ(VB6版)サンプルAP(MainModule.bas)
Option Explicit

'**********************************************************************
' 機能名    : 暗号化サンプルAP共通モジュール
'
' 機能説明  : メインおよび共通関数
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'           : このプログラムは、日本国著作権法および国際条約により保護
'           : されています。このプログラムの全部または一部を無断で複製
'           : したり、無断で複製物を頒布すると、著作権の侵害となります
'           : のでご注意ください。
'**********************************************************************
'**********************************************************************
' WIN32API定義
'**********************************************************************
' カレントディレクトリを変更するAPI
Public Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" ( _
    ByVal CurrentDir As String) As Long
'デスクトップウィンドウのハンドル取得
Public Declare Function GetDesktopWindow Lib "USER32" () As Long
'指定されたファイルの実行
Public Const SW_SHOW = 5
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, _
    ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

'**********************************************************************
' メソッド
'**********************************************************************
' @(f)
' 関数名    : Main
'
' 返り値    : 無し
'
' 引き数    : 無し
'
' 機能説明  : メイン関数
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Public Sub Main()
    On Error GoTo ErrHandler

    MainForm.Show

    Exit Sub
ErrHandler:
    If Err.Number = 339 Then
        MsgBox "システムエラー" & vbCrLf & Err.Description & vbCrLf & vbCrLf & _
        "VB6ランタイムがインストールされていない可能性があります。"
    Else
        MsgBox "システムエラー" & vbCrLf & Err.Description
    End If
    Exit Sub
End Sub

' @(f)
' 機能名    : ExecuteFile
'
' 返り値    : 無し
'
' 引き数    : fname (i) : 実行するファイル
'
' 機能説明  : 指定されたファイルを実行する
'
' 備考      :
'
' 著作権    : Copyright(C) 2006 のん All right reserved
'
Public Sub ExecuteFile(ByVal fname As String)
    On Error GoTo ErrHandler
    Dim fso As FileSystemObject
    
    Dim ret As Long
    If fname <> "" Then
        ret = ShellExecute(GetDesktopWindow, "open", fname, vbNullString, "", SW_SHOW)
        If ret <= 32 Then
            MsgBox "指定のファイルを起動出来ませんでした。"
        End If
    End If
    
    Exit Sub
ErrHandler:
    MsgBox "システムエラー" & vbCrLf & Err.Description
    Exit Sub
End Sub