2011-07-01 37 views
0

我有一個包含WebBrowser控件的Windows窗體應用程序。現在我想處理WebBrowser控件的Copy事件(上下文菜單 - >複製以及Ctrl + C),並在該事件中執行一些我自己的處理。如何檢測WebBrowser控件的複製事件?

我該如何做到這一點?

回答

1

,我發現了另一種方式是這樣的:

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. 
} 

這會觸發即使上下文菜單複製事件。

+0

啊,非常很好找! –

1

至於處理Ctrl + C組合,可以wireup到Web瀏覽器的PreviewKeyDown事件做:

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

如果你有一個控制+ C複製項目的Web瀏覽器自己的上下文菜單中,處理其點擊事件。

+0

感謝您的回覆。我正在通過覆蓋WndProc的過度複雜的路線,並聽取複製消息,這些消息似乎不會爲此控制而激發!另外我受限於不能替換默認的上下文菜單。 :(使用'Document'我可以進入'ContextMenuShowing'。你知道我們是否可以捕獲默認的Copy事件? – Mayank

+0

我不得不說,至少不容易沒有很多奇怪的黑客。您將獲得底層的IHTMLDocument2 DOM接口,其中最接近的就是選擇項,它可以讓您在頁面中進行主動選擇,即使使用全局鼠標掛鉤,仍然很難確定是否單擊了上下文中的複製菜單項菜單,我也查看了IHTMLDocument3,4,5,但仍然沒有太多有用 –

+0

似乎我將不得不重新創建整個上下文菜單及其功能然後再次感謝您的幫助! – Mayank

相關問題