質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

3011閲覧

c# webBrowserコントロール上でGetElementFromPointと同じ事がしたい

kyosin

総合スコア15

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2019/02/13 01:36

編集2019/02/13 01:56

前提・実現したいこと

現在フォーム上に、System.Windows.Controls.WebBrowserを用意し、
ブラウザページを開いています。
表示されるページ上のシャットダウン画像をクリックすると、
EXEが終了するという処理を行いたいのですが、
WebBrowserコントロールで、Webページ上の画像クリック時、
選択したマウスポイント位置から要素を取得する「GetElementFromPoint」のような
関数が見つけれずに困っています。
検索をかけるにしても、System.Windows.Form.WebBrowserと
ごちゃ混ぜの検索結果となり、上手に調べることが出来ていません。

System.Windows.Controls.WebBrowserの際、
画面、または画像クリックした際のクリックイベントの作成方法、
マウスポイントからクリックされた要素を読み取る方法をご教授いただけますでしょうか?

試したこと

System.Windows.Form.WebBrowserであれば、
以下のソースのように、マウス位置から画像を取得することが可能でした。

// ブラウザ上のマウス位置の取得
System.Drawing.Point pMouse = webBrowser.PointToClient(MousePosition);

// HTMLクリック
if (webBrowser.Document.GetElementFromPoint(pMouse).Name == "close")
{
this.Close();
return true;
}

補足情報(FW/ツールのバージョンなど)

visual studio 2015
c#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

stackoverflowで同じ質問が出ていましたので載せておきます。

GetElementFromPoint in WebBrowser - e.ClientMousePosition
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/f2686ee6-29e7-44fe-b737-da7ec2bb90c3/getelementfrompoint-in-webbrowser-eclientmouseposition?forum=wpf

解決済チェックの付いた回答の最初のリンクは切れていますが、
http://www.dotnetfunda.com/articles/show/840/working-with-webbrowser-in-wpf
と同じようです。

たぶん、JavaScript側からC#の関数をコールするやり方で代用したのだと思います。

話は変わりますが、以前私が別のプラットフォームで実現した際には、画像に適当なリンク(<a href="#end">)を貼っておき、コントロール側のURL変更イベントを監視し、リンク先のURLに「#end」が含まれていたら終了する、というようなコードを書いた覚えがあります。

ご参考まで。

投稿2019/02/13 02:37

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

ご連絡ありがとうございます。

画像に適当なリンク(<a href="#end">)を貼っておき、コントロール側のURL変更イベントを監視し、リンク先のURLに「#end」が含まれていたら終了する、というようなコードを書いた覚えがあります。

こちらの内容を参考にし、無事実装させることが出来ました!
ありがとうございました。

     public MainWindow() { InitializeComponent(); webBrowser= new System.Windows.Controls.WebBrowser(); //URL変更時イベントを追加 webBrowser.Navigated += _webbrowserObj_Navigated; }      private void webBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) { string url = e.Uri.ToString(); if (url.Contains("#ENDEND") == true) { //押されたURLから切り替えボタンクリック処理と判定 this.Close(); } }

投稿2019/02/13 05:10

kyosin

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問