
こんにちは,いつもお世話になっています.
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコード件数の表示
-
java のメソッドの使い方について
-
javaに"search"という関数 or ...
-
String.containsの反対機能はあ...
-
Javaの関数名が長い?
-
コマンドライン引数のチェック
-
VB.Net: クラスの共有メソッド...
-
DAOクラスの使い方
-
staticなフィールドをstaticじ...
-
Google Apps Script で getRang...
-
別クラスのmainメソッドの実行
-
Java初級 引数に適用できません
-
メソッド宣言の戻り値の型にク...
-
contextってなんですか?
-
説明文書でのメソッド・変数の...
-
静的メソッドとインスタンスメ...
-
StringBufferからStringへキャ...
-
JAVAコンパイルができない。
-
C# 他のnamespaceにあるメソッ...
-
Jakarta POI での、excelのシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
String.containsの反対機能はあ...
-
Java初級 引数に適用できません
-
なぜprotected overrideなのか
-
レコード件数の表示
-
abstract と static を一緒に付...
-
StringBufferからStringへキャ...
-
YYYYMMDD書式の日付に対する適...
-
C言語での文字列より値を抜き出す
-
別クラスのmainメソッドの実行
-
メソッドの引数に指定されてい...
-
Strutsでチェックボックスの値...
-
readLine()ではじめから読み直...
-
JUnitのテストメソッドごとのメ...
-
C# 点の描き方をおしえてくだ...
-
Google Apps Script で getRang...
-
C# の ByVal と ByRef について
-
javaに"search"という関数 or ...
-
シェルスクリプトからのJavaメ...
-
説明文書でのメソッド・変数の...
-
return new使用時
おすすめ情報