にむぞノート

新米プログラマーです。 仕事、 趣味で得た知識を適当に残していきます。

PowerShellでクリップボード履歴管理ツールのランチャーを作ってみた。

クリップボード履歴管理ツールとして人気の御三方を 手軽に切り替えられるスクリプトです。

# Loading Assembly
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$CLCL = "C:\Program Files (x86)\CLCL\CLCL.exe"
$ClipHst = "C:\Users\Ueokaj\Downloads\FreeSoft\ClipboardHistory\ClipboardHistory_x64.exe"
$Clibor = "C:\Users\Ueokaj\Downloads\FreeSoft\clibor\Clibor.exe"



    # Making Form
    $Form = New-Object System.Windows.Forms.Form
    $Form.Size = New-Object System.Drawing.Size(350,260)
    $Form.Text = "ClipBoard History Management"
    $Form.StartPosition = "CenterScreen"

    # クリップボード履歴ツールの選択グループ
    $MyGroupBox = New-Object System.Windows.Forms.GroupBox
    $MyGroupBox.Location = New-Object System.Drawing.Point(10,10)
    $MyGroupBox.size = New-Object System.Drawing.Size(310,150)
    $MyGroupBox.text = "クリップボード履歴管理ツールを選択してください。"

    # Making Radio button
    $RadioCLCL = New-Object System.Windows.Forms.RadioButton
    $RadioCLCL.Location = New-Object System.Drawing.Point(20,20)
    $RadioCLCL.size = New-Object System.Drawing.Size(280,30)
    $RadioCLCL.Checked = $True
    $RadioCLCL.Text = "CLCL(ファイル、画像の管理もサポート)"

    $RadioClipHst = New-Object System.Windows.Forms.RadioButton
    $RadioClipHst.Location = New-Object System.Drawing.Point(20,60)
    $RadioClipHst.size = New-Object System.Drawing.Size(280,30)
    $RadioClipHst.Text = "ClipBoard History(ダイレクトペーストが可能)"

    $RadioClibor = New-Object System.Windows.Forms.RadioButton
    $RadioClibor.Location = New-Object System.Drawing.Point(20,100)
    $RadioClibor.size = New-Object System.Drawing.Size(280,30)
    $RadioClibor.Text = "Clibor(FIFOに加えLIFOモードもサポート)"

    # Making OK button
    $OKButton = new-object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Point(85,170)
    $OKButton.Size = New-Object System.Drawing.Size(80,40)
    $OKButton.Text = "OK"
    $OKButton.DialogResult = "OK"

    # Making cancel button
    $CancelButton = new-object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Point(175,170)
    $CancelButton.Size = New-Object System.Drawing.Size(80,40)
    $CancelButton.Text = "キャンセル"
    $CancelButton.DialogResult = "Cancel"

    # final operation
    $MyGroupBox.Controls.AddRange(@($RadioCLCL,$RadioClipHst,$RadioClibor))
    $Form.Controls.AddRange(@($MyGroupBox,$OKButton,$CancelButton))
    $Form.AcceptButton = $OKButton
    $Form.CancelButton = $CancelButton
    $Form.MaximizeBox = $False

$Form.TopMost = $True
$dialogResult = $Form.ShowDialog()

Get-Process | ? {$_.ProcessName -in "CLCL", "ClipboardHistory_x64", "Clibor"} `
            | % {Stop-Process -name $_.ProcessName}

if ($dialogResult -eq "OK"){
    if ($RadioCLCL.Checked){
        Start-Process $CLCL
        $Result = "CLCL"
    } elseif ($RadioClipHst.Checked){
        Start-Process $ClipHst
        $Result = "ClipBoard History"
    } elseif ($RadioClibor.Checked){
        Start-Process $Clibor
        $Result = "Clibor"
    }
}else{
    exit
}

[System.Windows.Forms.MessageBox]::Show($Result + "をアクティブ履歴ツールに適用しました。")