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);
    }
}

但它不起作用。我在 IF 块之前添加了以下内容,以查看它是否正在接收WM_PASTE消息。

Debug.WriteLine(m.Msg);

在运行时,即使在多个Ctrl-V.

它没有收到该消息吗?

那么有什么办法呢?粘贴前如何清理文本?

4

1 回答 1

2

WM_PASTE 不是通知,而是命令。您将发送到 EDIT 控件以使其将剪贴板粘贴到控件中。

当然,网络浏览器不是编辑框,所以不会以同样的方式进行。您将需要拦截 IHtmlElement2.onpaste 事件。

于 2013-01-12T13:46:41.287 回答