C# 如何检测WebBrowser控件的复制事件?

C# 如何检测WebBrowser控件的复制事件?,c#,.net,winforms,C#,.net,Winforms,我有一个包含WebBrowser控件的Windows窗体应用程序。现在,我想处理WebBrowser控件的复制事件上下文菜单->复制以及Ctrl+C,并在该事件中执行一些我自己的处理 如何实现这一点?就处理Control+C而言,您可以连接到WebBrowser的事件并执行以下操作: private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if (e.KeyData.ToStr

我有一个包含WebBrowser控件的Windows窗体应用程序。现在,我想处理WebBrowser控件的复制事件上下文菜单->复制以及Ctrl+C,并在该事件中执行一些我自己的处理


如何实现这一点?

就处理Control+C而言,您可以连接到WebBrowser的事件并执行以下操作:

private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
    if (e.KeyData.ToString() == "C, Control") {
        Debug.WriteLine("You pressed Control + C");
        // Handle here
    }
}

如果您在web浏览器上有自己的上下文菜单和Control+C复制项,请处理其单击事件。

就处理Control+C而言,您可以连接到WebBrowser的事件并执行以下操作:

private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
    if (e.KeyData.ToString() == "C, Control") {
        Debug.WriteLine("You pressed Control + C");
        // Handle here
    }
}

如果您在web浏览器上有自己的上下文菜单和Control+C复制项,请处理其单击事件。

我发现的另一种方法是:

private void myBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    myBrowser1.Document.GetElementsByTagName("body")[0].AttachEventHandler("oncopy", SayHello);
}

public void SayHello(object obj,EventArgs e)
{
    MessageBox.Show("Hello"); //Do your stuff here.
}

这甚至会触发上下文菜单复制事件。

我发现的另一种方法是:

private void myBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    myBrowser1.Document.GetElementsByTagName("body")[0].AttachEventHandler("oncopy", SayHello);
}

public void SayHello(object obj,EventArgs e)
{
    MessageBox.Show("Hello"); //Do your stuff here.
}

这甚至会触发上下文菜单复制事件。

谢谢您的回复。我正在经历一个过于复杂的过程,覆盖WndProc,并监听复制消息,这些消息似乎不适合此控件!此外,我还被限制不替换默认关联菜单:使用文档,我可以访问ContextMenuShow。你知道我们是否也可以捕获默认复制事件吗?我不得不说不,至少如果没有很多奇怪的黑客攻击,不容易。即使您获得了底层的IHTMLDocument2 DOM接口,其中最接近的是选择项,它为您提供页面中的活动选择,即使使用全局鼠标挂钩,也很难确定他们是否单击了上下文菜单中的复制菜单项。我还浏览了IHTMLDocument3、4、5,但仍然没有什么太有用的东西,似乎我必须重新创建整个上下文菜单及其功能。再次感谢你的帮助!谢谢你的回复。我正在经历一个过于复杂的过程,覆盖WndProc,并监听复制消息,这些消息似乎不适合此控件!此外,我还被限制不替换默认关联菜单:使用文档,我可以访问ContextMenuShow。你知道我们是否也可以捕获默认复制事件吗?我不得不说不,至少如果没有很多奇怪的黑客攻击,不容易。即使您获得了底层的IHTMLDocument2 DOM接口,其中最接近的是选择项,它为您提供页面中的活动选择,即使使用全局鼠标挂钩,也很难确定他们是否单击了上下文菜单中的复制菜单项。我还浏览了IHTMLDocument3、4、5,但仍然没有什么太有用的东西,似乎我必须重新创建整个上下文菜单及其功能。再次感谢你的帮助!