
こんにちは,いつもお世話になっています.
C#を用いて,ローカルに保存したhtmlファイルをwebBrowserで表示し,
そこに表示されたテキストの一部をマウスで選択してボタンアクションで取得するような機能を実現したいと考えています.
現在WebBrowser.Document.Body.InnerText.Substring(int, int)を使用して選択された文字列を取得しようと考えているのですが,
ブラウザで表示されているテキストにはtextBoxでいうところのselectionStartsやselectionLengthのようなプロパティがありません.
どのようにしたら可能になるでしょうか.
もちろん目的の機能が実現できるならば上記の方法にこだわるつもりはありません.
他に何か方法がありそうでしたらそちらも教えていただけないでしょうか.
プログラミング初心者ですので質問の仕方に至らない部分があるとは思いますが,
どうぞよろしくお願いいたします.
No.1ベストアンサー
- 回答日時:
'VB.NETで書いているが,使っているクラスやらメソッドやらは同じなので
'C#やってれば大体想像が付くはず。
'VB.NETで使っているDirectCastは普通にキャストしてくれ。
'なお,
'[.NET]タブから
'System
'System.Windows.Forms(Formや各種コントロールのため)
'System.Drawing (Sizeクラスのため)
'を,
'[COM]タブから
'Microsoft HTML Object Library 【重要】
'を読み込む必要があるので注意
Namespace Q3475698
Public Class Q3475698A
Shared Sub Main
Dim Form1 As New Q3475698B
Form1.ShowDialog
End Sub
End Class
Public Class Q3475698B
Inherits System.Windows.Forms.Form
Private Webbrowser1 As System.Windows.Forms.WebBrowser
Private TextBox1 As System.Windows.Forms.TextBox
Private Button1 As System.Windows.Forms.Button
Sub New
Webbrowser1 = New System.Windows.Forms.WebBrowser
TextBox1 = New System.Windows.Forms.TextBox
Button1 = New System.Windows.Forms.Button
Me.Size = New System.Drawing.Size(800,600)
With Webbrowser1
.Left = 0
.Top = 0
.Size = New System.Drawing.Size(800,550)
End With
With TextBox1
.Left = 0
.Top = 550
.Size = New System.Drawing.Size(600,20)
End With
With Button1
.Left = 600
.Top = 550
.Size = New System.Drawing.Size(200,20)
End With
Me.Controls.AddRange(New System.Windows.Forms.Control(){Webbrowser1,TextBox1,Button1})
AddHandler Button1.Click,AddressOf OnButton1_Click
Webbrowser1.Navigate("http://www.google.co.jp/")
End Sub
Private Function OnButton1_Click() As Boolean
TextBox1.Text = GetSelectionText()
Return True
End Function
Public Function GetSelectionText() As String
'MSの資料
'http://msdn2.microsoft.com/en-us/library/aa76884 …
'を見ると,createRangeメソッドはControlRangeであることもあるらしいが,俺は良く解らんのでのでそこら辺は自分で調べて頑張れ。
Dim Range As mshtml.IHTMLTxtRange = DirectCast(DirectCast(Webbrowser1.Document.DomDocument, mshtml.IHTMLDocument2).selection.createRange, mshtml.IHTMLTxtRange)
Return Range.text
End Function
End Class
End Namespace
himajin100000 様
お返事ありがとうございます.
ここまで丁寧に回答をしていただき非常にうれしく思います.
私も他の人にアドバイスできるよう精進したいと思います.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- その他(ブラウザ) Twitterの「返信をさらに表示」 ボタンの後ろに隠れているツイートを常に表示 1 2023/08/04 12:20
- JavaScript 【GAS】WEBアプリでハイパーリンクを挿入したい 1 2023/03/12 19:20
- その他(セキュリティ) 特定のWEBページのフリーズ AMAZONサイト PC側? ネットワーク? サイトに問題? 1 2023/01/30 16:23
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- WordPress(ワードプレス) WordpressでYouTubeの埋め込みができない。 1 2022/10/26 01:08
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Java初級 引数に適用できません
-
C# の ByVal と ByRef について
-
シェルスクリプトからのJavaメ...
-
YYYYMMDD書式の日付に対する適...
-
メソッドの引数に指定されてい...
-
Javaで色表現10進→16進のクラス...
-
なぜprotected overrideなのか
-
Java初心者です。例外のキャッ...
-
C# でメソッドに送られてきたOb...
-
メソッドのオーバーロードとオ...
-
親の親のメソッドを呼ぶには?
-
CSVから読み込んだデータの保持...
-
クラスを作るとメソッドの数が...
-
下記のリストならno002が含まれ...
-
不要なstaticメソッドの見分け...
-
JUnitのテストメソッドごとのメ...
-
Strutsでチェックボックスの値...
-
return new使用時
-
VB.Net: クラスの共有メソッド...
-
C言語での文字列より値を抜き出す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
String.containsの反対機能はあ...
-
Java初級 引数に適用できません
-
abstract と static を一緒に付...
-
なぜprotected overrideなのか
-
C# 点の描き方をおしえてくだ...
-
レコード件数の表示
-
C言語での文字列より値を抜き出す
-
StringBufferからStringへキャ...
-
Java初心者です、エラーの意味...
-
Google Apps Script で getRang...
-
別クラスのmainメソッドの実行
-
Strutsでチェックボックスの値...
-
説明文書でのメソッド・変数の...
-
メソッド宣言の戻り値の型にク...
-
return new使用時
-
java ジェネリックスに関して
-
クラスを作るとメソッドの数が...
-
C# でメソッドに送られてきたOb...
-
メソッドの引数に指定されてい...
-
readLine()ではじめから読み直...
おすすめ情報