こんにちは,いつもお世話になっています.
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ランキング
-
なぜprotected overrideなのか
-
Strutsでチェックボックスの値...
-
Java初級 引数に適用できません
-
C# 点の描き方をおしえてくだ...
-
String.containsの反対機能はあ...
-
別クラスのmainメソッドの実行
-
abstract と static を一緒に付...
-
レコード件数の表示
-
テキストファイルに書かれた文...
-
不要なstaticメソッドの見分け...
-
親の親のメソッドを呼ぶには?
-
JUnitのテストメソッドごとのメ...
-
public static void main (Stri...
-
Google Apps Script で getRang...
-
getBinaryOutputStream()が使え...
-
シェルスクリプトからのJavaメ...
-
C# の ByVal と ByRef について
-
クラスを作るとメソッドの数が...
-
C# 他のnamespaceにあるメソッ...
-
YYYYMMDD書式の日付に対する適...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
abstract と static を一緒に付...
-
なぜprotected overrideなのか
-
C# 点の描き方をおしえてくだ...
-
レコード件数の表示
-
String.containsの反対機能はあ...
-
Google Apps Script で getRang...
-
StringBufferからStringへキャ...
-
public static void main (Stri...
-
YYYYMMDD書式の日付に対する適...
-
クラスを作るとメソッドの数が...
-
C# でメソッドに送られてきたOb...
-
C# の ByVal と ByRef について
-
Fileの読み取り専用の解除
-
メソッド宣言の戻り値の型にク...
-
Strutsでチェックボックスの値...
-
メソッドの引数に指定されてい...
-
別クラスのmainメソッドの実行
-
contextってなんですか?
-
javaに"search"という関数 or ...
おすすめ情報