WebBrowserコントロールを含むWindowsフォームアプリケーションがあります。今、私はWebBrowserコントロールのコピーイベント(コンテキストメニュー - >コピーとCtrl + C)を処理し、そのイベントで自分の処理のいくつかを行いたいと思います。WebBrowserコントロールのコピーイベントを検出するには?
どうすればこの問題を解決できますか?
WebBrowserコントロールを含むWindowsフォームアプリケーションがあります。今、私はWebBrowserコントロールのコピーイベント(コンテキストメニュー - >コピーとCtrl + C)を処理し、そのイベントで自分の処理のいくつかを行いたいと思います。WebBrowserコントロールのコピーイベントを検出するには?
どうすればこの問題を解決できますか?
もう一つの方法は、これをしました。
は限りコントロール+ Cを扱うように、あなたはWebブラウザーのPreviewKeyDownイベントにwireupと行うことができます。
private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
if (e.KeyData.ToString() == "C, Control") {
Debug.WriteLine("You pressed Control + C");
// Handle here
}
}
あなたがコントロール+ Cコピー項目に、Webブラウザ上で独自のコンテキストメニューを持っている場合は、ハンドルそのクリックイベント。
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をオーバーライドし、このコントロールのために何らかの形で起こっていないCopyメッセージを聞いて、複雑すぎる経路を辿っていました!また、私はデフォルトのコンテキストメニューを置き換えないように拘束されています。 : 'Document'を使うと' ContextMenuShowing'に行くことができます。デフォルトのCopyイベントもトラップできるかどうか分かりますか? – Mayank
奇妙なハックがなければ、簡単には言えません。あなたは基本的なIHTMLDocument2 DOMインターフェイスを取得します。そこに最も近いのは、選択項目です。これは、ページ内の選択をアクティブにします。また、グローバルマウスフックを使用しても、コンテキスト内でコピーメニュー項目をクリックした私はまたIHTMLDocument3,4,5を見ましたが、あまりにも役に立たないものはありません –
コンテキストメニュー全体とその機能を再作成する必要があるようです。 – Mayank
ああ、非常に良い発見! –