Firefox のクリップボードアクセスは テキストではなかった

ツイッタークライアント mofooter でクリップボードのコピーを使用すると、Firefoxにアドレスがうまくコピーできないことがあります。

しかし、クリップボードビューア(clipbrd) を使うと、 UNICODE TEXT/ANSI TEXT/OEM Text の いずれも正常に転送できています。

試しに、Word Pad にコピーしてみると 全く別の文字列がコピーされることが判明しました。

これは、Firefoxで再現されてる文字列と同じでした。
つまり、RTF形式のデータがFirefox内でのコピー処理(アドレスバー含む)に使用されているということです。

対策1
コードにするとこんな感じかな?
WORD hRTF=RegisterClipboardFormat(“Rich Text Format”);
SetClipboardData(hRTF,hGlobal);

対策2
ちなみに、EmptyClipboard()を事前に実行していれば、
SetClipboardData(CF_UNICODETEXT,hGlobal)
を実行すると全ての属性のClipboardに転送してくれるようです。

ドキュメント:
EmptyClipboard 関数を呼び出さないと、OpenClipboard の hWndNewOwner パラメータで指定したウィンドウはクリップボードのオーナーになりません。
EmptyClipboard 関数は クリップボードを空にし、クリップボード内のデータのハンドルを解放します。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です