Python 学習:クリップボード

2014-05-02 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
3、2、1、1、2、 0、0、0、1、0(41)で、換算ポイント 61pt 。
特段のランク変動は無し?
・-・ - -・

さて、本文。

Python で、“クリップボード”を使う方法は???

探してみた。
「Windows Python クリップボード」で検索。

先ず、「lolloo-htnの日記」2013-08-28 の記事:
python でクリップボード入出力
が見つかった。
  自分用メモ。クリップボード入出力は標準のpythonモジュールのみでいける。
  import Tkinter
  ・・・・・

これは簡単そうダ。

早速試してみた。
若干手直しして、

import Tkinter as Tk
def get_clip():
return Tk.Text().clipboard_get()
def put_clip( text_u ):
Tk.Text().clipboard_clear()
Tk.Text().clipboard_append(text_u)
# ---------
a = u'hello world <紙>'
put_clip(a)
b = get_clip()


テキストだけだが、行けそう?
だが、・・・

自分自身との間ではOKだが、
外部の他のAP( EXCEL とか、一太郎 とか )との間では、
「ダメ」みたい?


次に、「@IT」の
Windows TIPS -- クリップボードの中身をのぞき見る方法
だが、
これはWindowsの「clipbrd」なるものの使い方?


先を急ぐ。
「ヲドリテヒヅル」の些か古いが、2011-04-14 の記事:
クリップボードにテキストをコピーする + subprocess

これは、
「windowsに付属するclip.exeを介してclipboardに送る」

それで、「Windows clip.exe」で検索してみたら、
書き出すだけ!!!

これもパス。

で、「Fioの素敵な日々」2008-10-26 (もっと古いか) の記事:
Pythonでクリップボードを扱う(テキスト編)

  win32clipboardというモジュールをimportすれば、簡単にできてしまいます。

  ・・・・・

だが、おかしい??? 今ひとつ、・・・

なので、「win32clipboard」で検索。

「GitHub Gist」の、
Python Win32 clipboard usage
を見つけた。

これにもおかしなところがある?


でも、上記2つを合わせると、行ける!

<紙>流で、作ってみた。
Module win32clipboard
を参考にして。

# Uses PyWin32 http://timgolden.me.uk/pywin32-docs/win32clipboard.html
# -*- coding: utf-8 -*- # 本ファイルのコードは、UTF-8 !

import win32clipboard

def get_clipboard():
win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
return data

def set_clipboard( text ):
win32clipboard.OpenClipboard()
# win32clipboard.EmptyClipboard() # これは要らない???
win32clipboard.SetClipboardText( text )
win32clipboard.CloseClipboard()


test = u'<紙>\nABC' # 2Bコードも可
set_clipboard( test )

# ----------------------------- これで、Windows のレベルで、共有している!!!

text2 = get_clipboard()
print text2
_ = raw_input() # input() だと「Enter」のみではダメなので。




これで、“テキスト・データ”については、一件落着。


次に、“画像データ”はどうする?

欲しいのは、よそから受け取ること。
(書き出しは、後回しでペンディング)

1つ見つけたのは、
「三次元日誌」2008-01-25 の記事:
クリップボードに画像(DIBイメージ)をおくりこむ
  Blenderでやりたいことがあったので調べた。
  まずwin32clipboardを使えるようにpywin32をインストールする。
  https://sourceforge.net/projects/pywin32/
  以下のようなコードでRGBのバイト列を画像として
  クリップボードに送ることができる。
  ・・・・・
  ・・・・・
これか?

いや、
「himazu blog」2008-06-29 の記事:
Pythonでクリップボードの画像をファイルに保存する
  Windowsのクリップボード上の画像をファイルに保存するプログラムを
  Pythonで書いてみた。Python 2.5.2とIronPython 1.1.1を使った。
  ちなみに私はPython初心者である。

  やりたいこと

  ・・・・・
  ・・・・・

  クリップボード上の画像を保存する

  そこで、PIL (Python Image Library)をインストールした上で、以下を実行してみた。
  もちろん、実行前にAlt+Print Screenを押して。
  若干追加:(末尾の2008-08-08追記を参照されたし)

  ・・・・・
  ・・・・・

これダ!

早速、
「Stack Overflow」の
Write image to Windows clipboard in python ・・・
も参考にして、
<紙>流にアレンジ(?)

### import sys # <==== これ、不使用
from StringIO import StringIO
import win32clipboard as cb
from PIL.BmpImagePlugin import DibImageFile # <==== 「PIL.」が必要

def main():
cb.OpenClipboard()
if not cb.IsClipboardFormatAvailable( cb.CF_DIB ):
print 'no image in clipboard'
return
imgData = cb.GetClipboardData( cb.CF_DIB )
imgFile = StringIO( imgData )
img = DibImageFile( imgFile )
fp = open( 'image.bmp', 'wb' )
img.save( fp )
fp.close()
main()
cb.CloseClipboard()



完成ですね。


蛇足:
WinPython_amd64 でも、pywin32 は使える。


更なる Python 学習は続く。



見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140413
関連記事
スポンサーサイト

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

艦これのSSを撮影するPythonスクリプト書いた。

タイトルの通り。 いままでTwitter等でSSを公開するとき、プリントスクリーンでスクリーンショットを撮り、それをペイントに貼り付けてトリミングしていた。 だがいちいちそれをやるのは面倒くさい、ということでpythonで一発でやれるようにしようや、というのが動機になる。 以下コード。 [python] # coding:utf-8 # Project_SS from StringIO im...

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク