Sikuliからクリップボード (ペーストボード) の内容を操作したかったので調べてみました。
Stack Overflowによると、Java AWT経由でクリップボードを操作すればよいみたいです。
クリップボードの取得
文字列の取得と文字列のセットのどちらの場合でも、まず始めにクリップボード自体を取得する必要があります。
1 2 3 4 5 | from java.awt import Toolkit from java.awt.datatransfer import Clipboard toolkit = Toolkit.getDefaultToolkit() clipboard = toolkit.getSystemClipboard() |
クリップボードから文字列を取得する
クリップボードの取得後に次のコードを実行するだけです。
1 2 3 4 | from java.awt.datatransfer import DataFlavor contents = clipboard.getContents( None ) text = contents.getTransferData(DataFlavor.stringFlavor) |
クリップボードに文字列をセットする
クリップボードの取得後に次のコードを実行するだけです。
1 2 3 | from java.awt.datatransfer import StringSelection clipboard.setContents(StringSelection(""), None ) |
サンプルコード
次のコードは、Chromeの一番左のタブから5つのタブからURLを抜き出し、その中のhttpsのものをクリップボードにセットします。
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 | from java.awt import Toolkit from java.awt.datatransfer import Clipboard from java.awt.datatransfer import DataFlavor from java.awt.datatransfer import StringSelection app = App( 'Chrome.app' ) app.focus() win = app.window( 0 ) win. type ( '1' , KeyModifier.CMD) urls = [] for i in range ( 5 ): win. type ( 'l' , KeyModifier.CMD) win. type ( 'c' , KeyModifier.CMD) toolkit = Toolkit.getDefaultToolkit() clipboard = toolkit.getSystemClipboard() contents = clipboard.getContents( None ) url = contents.getTransferData(DataFlavor.stringFlavor) urls.append(url) win. type (Key.RIGHT, KeyModifier.CMD | KeyModifier.ALT) clipboard.setContents(StringSelection( '\n' .join(urls)), None ) |
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。