0

何かがクリップボードに置かれたときに関数を実行したい (例: strg+c)。

TCL/TK でクリップボードを監視して、何かが入った場合に通知を処理できるようにするにはどうすればよいですか (イベント駆動型)。

私はいくつかの調査を行いましたが、コマンドafterは私が探していたものとはまったく異なります。

proc observeClipboard {} {

        set lClipboardContent [clipboard get]
        # do something with clipboard content
        after 1000 observeClipboard
}

期待どおりに機能せず、イベント駆動型の (よりスムーズな) ソリューションにもなりません。

4

1 に答える 1

2

最も簡単な方法は、おそらくクリップボードの選択を常に所有することです。
これにはいくつかの欠点があります: クリップボードの責任はあなたにあり、クリップボードの内容の一部が失われる可能性があるため、これは防弾ではありません。

proc readclip {} {
    after 50 {
        puts [set cnt [clipboard get]]
        clipboard clear
        clipboard append $cnt
        selection own -command readclip -selection CLIPBOARD .
        selection handle . [list string range $cnt]
    }
}
selection own -command readclip -selection CLIPBOARD .

readclip呼び出されると、新しいアプリケーションはクリップボードに対する所有権を要求しましたが、まだ所有権を持っていないため、所有権を取得してすべてをセットアップするまで少し待ちます。

また、複数のアプリケーションがこれを行う場合、両方のアプリケーションがクリップボードの所有権をめぐって「戦い」ますが、これは悪いことです。

于 2013-08-13T14:44:03.280 に答える