0

Adobe AIR でデスクトップ アプリを作成することの素晴らしい点は、Web 開発のスキルを引き続き使用できることです。

何らかの理由で、クリップボードの内容を検出してアプリに表示する際に、わずかな問題が発生しています。

これが私のコードです:

<body>
<div id="infoDiv"></div>

<script>
function everysecond() {
    setInterval("checkClipBoard()",1000);       
}   


function checkClipBoard(){

    if(air.Clipboard.generalClipboard.hasFormat("text/plain")){ 
        var text = air.Clipboard.generalClipboard.getData("text/plain"); 
    }else{
        var text = "nothing in clipboard"; 
    }

    $("#infoDiv").html(text);

}

everysecond();
</script>
</body>

アプリがフォーカスされているかどうかに関係なく、クリップボードにコピーしたものは何も検出されないようです (Ctrl + C)

誰かが私の問題を見ますか?

4

2 に答える 2

0

クリップボードのポーリングはひどいハックです。クリップボードを(合法的に)開いている他のアプリと競合します。そのため、アプリの実行中に、ユーザーがデータをコピー/貼り付けしようとしている他のアプリで障害 (および場合によってはクラッシュ) が発生します。「クリップボードを開けません」というエラーを見たことがありますか? このようなことが原因です。Air でどの機能を利用できるかはわかりませんが、クリップボード通知機能 (WM_DrawClipboard メッセージなど) がない場合は、ここでやろうとしていることの必要性を再考する必要があります。 .

これはそれを最もよく言います:

「プログラムは、ユーザーからの明示的な指示なしに、クリップボードからデータを転送するべきではありません。」— Charles Petzold、Windows 3.1 のプログラミング、Microsoft Press、1992 年

于 2012-11-28T18:23:48.683 に答える