検索ワードで根強い人気のpythonを使用してクリップボード上のテキストを取得する方法。諸般の都合上コメントは日本語で書かれているが、python的には英語で書くのが正しいと思われる。


from win32clipboard import *

def getClipboradText():
# クリップボードを開く。
# 閉じるまでは他のアプリからはクリップボードにアクセスできなくなる。
try:
OpenClipboard()
except:
print 'Clipboard open error.'
return u''

# クリップボードからテキストを取得。エラーだったら空の文字になる。
# 取得した文字列はUnicodeに変換される。APIが返す文字列はshift-jis。
try:
s = unicode(GetClipboardData(CF_TEXT), 'shift-jis')
except:
s = u''

# クリップボードを閉じる。
# 一度にクリップボードを開けるのは一つのアプリだけなので、閉じ忘れないこと。
try:
CloseClipboard()
except:
print 'Clipboard close error'

return s

def setClipboradText(s):
# クリップボードを開く。
# 閉じるまでは他のアプリからはクリップボードにアクセスできなくなる。
try:
OpenClipboard()
except:
print 'Clipboard open error.'
return

# エンコードでshift-jisに変換する。
# エンコードできない場合、そのまま文字列をクリップボードに設定する。
try:
text = s.encode('shift-jis')
except:
text = s

# クリップボードに値を設定。
# 必ず以前のデータをEmptyClipboard()で削除すること。
# 削除しない場合、新しい値は反映されない。
try:
EmptyClipboard()
SetClipboardText(s)
except:
print 'Clipboard set error.'

# クリップボードを閉じる。
# 一度にクリップボードを開けるのは一つのアプリだけなので、閉じ忘れないこと。
try:
CloseClipboard()
except:
print 'Clipboard close error'

return str

プロトタイプとしてはこんなもの。本当はエンコードの種類を判別して最適なエンコードをしたりとかした方が良いと思われる。エンコードの判別ルーチンとかは、きっとどこかに落ちてる。ちなみに、win32allが必要なので、インストールをお忘れなく。そしてwindows専用。