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