アットウィキロゴ
Imports System.Windows.Forms
Imports System.IO


Module Module1

    Sub Main()

        '失敗したらクリップボードを消去
        If Not TryClip() Then
            Clipboard.Clear()
        End If

    End Sub

    ''' <summary>
    ''' クリップしてみる
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function TryClip() As Boolean
        Dim args() As String
        args = System.Environment.GetCommandLineArgs()

        If Not args.Length >= 2 Then
            MsgBox("引数が足りません")
            Return False
        End If

        args(1) = args(1).ToLower '小文字として扱う
        Select Case args(1)
            Case "-ca"  'ClipArgs : 引数をクリップ
                If ClipArgs(args) Then Return True
            Case "-cf"  'ClipFile : 引数にあるテキストファイルをクリップ
                If ClipFile(args) Then Return True
            Case "-s"   'SaveClip : クリップボードにあるやつをシリアライズ化して保存
                If SaveClip(args) Then Return True
            Case "-co" 'ClipObject : 引数にあるシリアライズ化されたファイルをクリップ

        End Select

        MsgBox("該当するコマンドがありません")
        Return False
    End Function


    ''' <summary>
    '''
    ''' </summary>
    ''' <param name="args"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function ClipArgs(ByVal args() As String) As Boolean
        If args.Length > 3 Then
            MsgBox("引数が多すぎます")
            Return False
        End If
        Dim txt = TrimQuatation(args(2))
        Clipboard.SetText(txt)
        Return True
    End Function

    ''' </summary>
    ''' <param name="args"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function ClipFile(ByVal args() As String) As Boolean
        If args.Length > 3 Then
            MsgBox("引数が多すぎます")
            Return False
        End If
        Dim file = TrimQuatation(args(2))
        Dim encode As Text.Encoding = EncodingParser.GetCode(file)
        If encode Is Nothing Then
            Throw New InvalidOperationException("エンコードが特定できませんでした")
            Return False
        End If
        Using reader As New StreamReader(file, encode)
            Dim txt As String = reader.ReadToEnd()
            Clipboard.SetText(txt)
        End Using
        Return True
    End Function

    '最初と最後にあるクォーテーションを取り除く
    Private Function TrimQuatation(ByVal str As String) As String
        If str.StartsWith("""") Then
            str = str.Substring(1)
        End If
        If str.EndsWith("""") Then
            str = str.Substring(0, str.Length - 1)
        End If
        Return str
    End Function

    ''' <summary>
    '''
    ''' </summary>
    ''' <param name="args"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function SaveClip(ByVal args() As String) As Boolean
        Return False
        'If args.Length > 3 Then
        '    MsgBox("引数が多すぎます")
        '    Return False
        'End If
        'Dim file = TrimQuatation(args(2))

        'Dim clipObj As IDataObject = Clipboard.GetDataObject()


        'Dim serializer As New BinaryFormatter
        'Using stream As New System.IO.FileStream(file, System.IO.FileMode.Create)
        '    serializer.Serialize(stream, clipObj)
        '    stream.Close()
        'End Using

        'Return True
    End Function


End Module
最終更新:2013年11月08日 00:41