Ruby から Windows のクリップボードを操作する方法を紹介します。
(最後にそれを利用したお勧めのスクリプトを紹介します。)
次の二つの方法を説明します。
- win32-clipboard を使う方法
- AutoITX を使う方法
扱うクリップボードのデータがASCIIコードだけの場合には、win32-clipboard の方が簡単なのでお勧めです。しかし、ASCII以外の文字も扱いたい場合には、AutoITX3 を使う方が無難です。win32-clipboard では以下の様なエラーが発生することがあります。(win32-clipboard 0.5.2 にて確認しました。)
C:/Ruby192/lib/ruby/gems/1.9.1/gems/win32-clipboard-0.5.2/lib/win32/clipboard.rb:123:in `[]': invalid byte sequence in US-ASCII (ArgumentError)
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/win32-clipboard-0.5.2/lib/win32 /clipboard.rb:123:in `data'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/win32-clipboard-0.5.2/lib/win32 /clipboard.rb:123:in `data'
win32-clipboard の使い方
インストール
まだインストールしていない場合には、gemコマンドでインストールします。
> gem install win32-clipboardクリップボードのデータの読み書き
require 'win32/clipboard' puts Win32::Clipboard.data # クリップボードのデータを取得 Win32::Clipboard.set_data("string to set") # クリップボードにデータを設定
※ASCIIコード以外は正しく扱えないようです。
詳しくはこちら
または、win32-clipboardに付属のREADMEを参照
AutoITX の使い方
こちらは日本語も正しく扱えます。
インストール
まだインストールしていない場合には、AutoITX のインストーラをダウンロードして、インストールする。
http://www.autoitscript.com/site/autoit/downloads/クリップボードのデータの読み書き
# coding: UTF-8 require 'win32ole' itx = WIN32OLE.new("AutoITX3.Control") puts itx.ClipGet # クリップボードのデータを取得 itx.ClipPut("セットする文字列") # クリップボードにデータを設定
詳しくはインストーラに付属のヘルプファイルを参照
標準入力の内容をクリップボードにセットするスクリプト
以下のスクリプトにパスを通しておくと、たまに役立ちます。
:ruby:
require 'win32ole'
WIN32OLE.new("AutoITX3.Control").ClipPut($stdin.read)
[amazon asin="4839926689" /]