PowerShell で画像付箋アプリを作ってみた

Posted on 2024年08月04日 (日) in 自作ツール

アイキャッチ

目次

どのようなアプリなのか

簡単に言うと「クリップボードの画像をウィンドウとしてデスクトップに貼り付ける」アプリです。

このアプリは以前 Python で作成した Yukis Army knife というソフトの「画像付箋」という機能としても作りましたが、今回少々用事があり PowerShell で作ってみました。

コード

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
Add-Type -AssemblyName System.Windows.Forms

if ([Windows.Forms.Clipboard]::ContainsImage()) {
    $img = [Windows.Forms.Clipboard]::GetImage()
} else {
    Write-Host "クリップボードに画像がありません。"
    exit
}

$Form = New-Object System.Windows.Forms.Form

$Form.Text = "画像付箋"
$Form.TopMost = $true

$pic = New-Object System.Windows.Forms.PictureBox
$pic.Size = New-Object System.Drawing.Size($img.Width, $img.Height)
$pic.Image = $img
$pic.Location = New-Object System.Drawing.Point(0,0)
$pic.SizeMode = [System.Windows.Forms.PictureBoxSizeMode]::Zoom
$Form.Controls.Add($pic)

$Form.Add_SizeChanged({
    $pic.Size = $Form.ClientSize
})

$Form.ClientSize = New-Object System.Drawing.Size($img.Width, $img.Height)

$Form.Add_Shown({$Form.Activate()})
[void] $Form.ShowDialog()

使い方

  1. スクショ撮影や画像コピーをする

  2. ps1 ファイルを起動する

  3. 画像がウィンドウとして表示される

注意点

このスクリプトを使っても上手くいかないときは、以下の方法で対策してみてください

  1. ps1 ファイルの文字コードを「ANSI」にする

  2. コマンドプロンプトで「powerShell -WindowStyle Hidden -ExecutionPolicy RemoteSigned -File "ps1 ファイル名"」で実行してみる

感想

正直 PowerShell で GUI を作れるとは知らなかったので驚きました。

ただ ps1 は bat と違って直接コマンドを実行できないので、bat から簡単に起動できるようにしたり、ショートカットを使ってタスクバーから起動できるようにするなど、使うには工夫する必要がありそうです。

何ができるのかはまだよく分かっていませんが、しばらく練習も兼ねてデスクトップ向けの簡易ツールは PowerShell で作ることになりそうです。