0

を使用するwinform HTMLエディターを使用していますAxSHDocVw.AxWebBrowser。ユーザーは、他のソフトウェアからテキストをコピーしてこのコントロールに貼り付けています。問題は、貼り付け時に、Ctrl-Vフォーマットを保持するためにいくつかのフォントタグを追加することです。フォーマットを保持したくないので、フォーマットせずにきれいなテキストを貼り付けるか、少なくともFONTタグを追加しないでください。私が思うのは、Ctrl-Vクリーンアップクリップボードのテキストを貼り付ける前にインターセプトすることです。

そのため、メッセージを傍受WM_PASTEし、クリップボードの内容を以下のように修正されたテスト (確認のみ) に置き換えようとしました

class myWB : AxSHDocVw.AxWebBrowser
{
    protected override void WndProc(ref Message m)
    {
        if (m.Msg == 0x302)     // Trap WM_PASTE:
        {
            Clipboard.Clear();
            Clipboard.SetText("some text");
            return;
        }
        base.WndProc(ref m);
    }
}

しかし、それは機能していませんでした。WM_PASTEメッセージを受信して​​いるかどうかを確認するために、IF ブロックの前に次を追加しました。

Debug.WriteLine(m.Msg);

実行時に、出力ウィンドウに 0x302 (770) が表示されませんでしたCtrl-V

そのメッセージを受信して​​いませんか?

では、どのような方法があるのでしょうか。貼り付ける前にテキストをクリーンアップするにはどうすればよいですか?

4

1 に答える 1

2

WM_PASTE は通知ではなく、コマンドです。EDIT コントロールに送信して、クリップボードをコントロールに貼り付けます。

もちろん、Web ブラウザは編集ボックスではないので、同じようにはできません。代わりに、IHtmlElement2.onpaste イベントをインターセプトする必要があります。

于 2013-01-12T13:46:41.287 に答える