rubyでクリップボードの読み書き

rubyはプラットフォーム非依存なスクリプト言語だけれども、普段使いがWindowsだとクリップボードの文字列をあれこれしたいとか、何かとWin32APIが叩きたくなることがあります。そんな邪道な使い方をするためにwin32ライブラリなんて素敵なものが既にあります。みんな考えることは同じだwというわけで、今日はWin32ライブラリ経由でクリップボードを使う方法についてでも。

まずはwin32-clipboardをrubygems経由でインストール。

# gem install win32-clipboard --remote

インストールができたら後は以下のようなかんじで使う。

#!ruby -Ks
require 'win32/clipboard'

#読み込み 
puts Win32::Clipboard.data
#書き込み
Win32::Clipboard.set_data("hogehoge")
#再度読み込み
puts Win32::Clipboard.data

ネット上の書き込みのサンプルでWin32::Clipboard.data=で直接設定してるのがあったけれども、win32-clipboard(0.5.2)では動かなかったので、set_dataメソッドで設定してます。
実行するときは-rubygemsオプションを付けるかRUBYOPT環境変数rubygemsを設定しておくのを忘れずに。

vbsみたくIEのオブジェクト作ったりする必要もないので、IEのセキュリティ警告やら気にせず直接使えて超簡単。これでコピペするときにちょこっと内部の文字列をいじりたい時とかに使えます。あーそう言えば本屋バイト時代にISBNのハイフンを取り除くのにイラっとして、似たようなものをC言語で書いたのを思い出した。
ISBNのハイフンがうざい件 - 城陽人の本棚
基本的な発想は同じ。