クリップボードを使ってみよう 文字編

 パソコンを使った際、必ず使うコピー機能をプログラムから使ってみましょう。
 最近は便利になっているので意識したことはないと思いますが、コピー機能はWindowsのクリップボードというところにコピーしたい文字列を書き込みます。なのでNET FrameworkのClipboardというクラスを使用します。

 クリップボードに文字列をコピーする

 さてまずはClipboardを使えるようにしましょう。ClipboardはSystem.Windows.Formsの中に書かれているので

import clr
clr.AddReference('System.Windows.Forms')
from System.Windows.Forms import Clipboard

 これでClipboardを使えるようにできました。後はSetTextを使います。

Clipboard.SetText("コピーした文字列です。")

使い方は上記のように簡単です。次にコピーと対になる機能ペースト(貼り付け)について説明します。

 クリップボードから文字列を取得する

 先程はクリップボードに文字列を書き込みましたが今度は文字列を取得してみましょう。

if Clipboard.ContainsText():
  tt = Clipboard.GetText()

 今度はコピーのように一行では出来ません。コピーするときはただ書き込めばいいのですが、取得するときは、クリップボードの中身が文字列であることが保証されていないため確かめなければいけません。そのため、ContainsTextメゾットを使ってクリップボードの中身を確かめます。ContainsTextメゾットはクリップボードに中身が文字列であればTrueを返します。
 クリップボードの中身を確認したあと、GetTextメゾット文字列を取得します。

ではクリップボードを使ってみましょう。

import clr
clr.AddReference('System.Windows.Forms')
from System.Windows.Forms import Clipboard

Clipboard.SetText("コピーした文字列です。")
print "コピーしました。"
raw_input()

if Clipboard.ContainsText():
  tt = Clipboard.GetText()
  print "次の文字列をクリップボードから取得しました:" + tt
else:
  print "クリップボードの中身は文字列ではありません。"

raw_input()

出力画面:
 コピーしました。

 次の文字列をクリップボードから取得しました:コピーした文字列です。
次にもう一回実行してください。その際に、"コピーしました。"と表示された後、キーボードのprint screenキーを押してください。その後でEnterキーを押すと次のようになります。
出力画面:
 コピーしました。

 クリップボードの中身は文字列ではありません。
 これで、ContainsTextメゾットもちゃんと働いていることが分かりますね。