• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【C#】WebBrowser上で表示されているテキストの部分取得)

【C#】WebBrowser上でテキストの部分取得

このQ&Aのポイント
  • C#を使ってWebBrowser上で表示されているテキストの一部を取得する方法を教えてください。
  • WebBrowser.Document.Body.InnerText.Substringを使用してテキストを取得する方法を試していますが、テキストの選択位置を取得する方法がわかりません。
  • 他の方法でWebBrowser上のテキストの一部を取得することは可能でしょうか?プログラミング初心者なので、分かりやすく教えていただけると嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答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/aa768849.aspx 'を見ると,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

booo_2007
質問者

お礼

himajin100000 様 お返事ありがとうございます. ここまで丁寧に回答をしていただき非常にうれしく思います. 私も他の人にアドバイスできるよう精進したいと思います.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VB2005のWebbrowserでSubmit

    VB初心者です。 Webbrowserで、Submitを押して自動ログインしたいと思います。 ネットで色々調べてみると、 WebBrowser1.Document.All.GetElementsByName(TextBox2.Text)(0).InnerText = TextBox4.Text WebBrowser1.Document.All.GetElementsByName(TextBox3.Text)(0).InnerText = TextBox5.Text WebBrowser1.Document.Forms(0).InvokeMember("submit") で、実行可能というのがありました。 IDとパスワードの入力はできたのですが。(フォーム上で、TextBoxで入力しての話)Submitが実行されません。 ローカルウィンドーで見ても、よく判らないのですが、何をどのように調べれば、実行可能であるか?どうか?判るのでしょうか? どなたか?詳しい方宜しくお願いします。

  • WebBrowserに表示されているページのソースの取得方法

    RichTextBox1.Text =WebBrowser1.Document.body.innertext とすれば表示されている文字は取得できるのですがタグ付きのソースは 取得できません。 webBrowserコントロールに表示されている文字だけでなくタグもいっしょに 取得するにはどうすればよいのでしょうか

  • WebBrowserでgoogle検索するには?

    WebBrowserを使ってgoogle検索をVBで作ったブラウザ上で行いたいです。 具体的には、 「ComboBoxで選択した値」と「TextBoxで書き込んだキーワード」を &検索したいのですが Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted WebBrowser1.Document.All.GetElementsByName("q")(0).InnerText = TextBox1.Text WebBrowser1.Document.All.GetElementsByName("q")(0).InnerText = ComboBox1.SelectedItem WebBrowser1.Document.Forms(0).InvokeMember("submit") End Sub では、&検索ができません。常にコンボボックスで選択されたものだけが 検索され、しかも無限に検索をします。 対処法を教えていただけないでしょうか?

  • webbrowserについてボタンが見つからない

    現在 https://secure.avaonline.jp/member/ の自動ログインツールを作っているのですが、 WebBrowser1.Document.All.GetElementsByName("accountid")(0).InnerText = TextBox1.Text WebBrowser1.Document.All.GetElementsByName("passwd")(0).InnerText = TextBox2.Text によって、IDとPWの入力はできたのですが、ログインボタンと、ゲームスタートの ボタンどうしても見つかりません。 WebBrowser1.Document.All.GetElementsByName("ボタン名")(0).InvokeMember("submit") となど試してはみたのですが、 0' の値は 'index' に対して有効ではありません。'index' は 0 と -1 の間でなければなりません。 パラメータ名: index とエラーが出てしまいます。 上記のサイトはjavascriptなど使っていて見つけられなかったので、 具体的なボタンの名前やどのように記述していいの教えてください。 よろしくお願いします

  • WebBrowserでHtmlを取得

    WebBrowserでHtmlを取得する方法をおしえてください フォーム上に、WebBrowser1、TextBox1、Button1を配置しています。 TextBox1にHtmlを表示し、Button1は、WebBrowser1に表示している WEBページを更新します。 やりたい事  (1)フォームを開いた時に、URLで指定したWEBページを表示させ   TextBox1にHtmlを表示させる。  (2)Button1をクリックした時、表示しているWEBページを更新する。   更新後のHtmlをTextBox1に表示させる。  (3)TextBox1の表示が完了したらHtmlを処理する。(未着手) 現在、(1)は動作するのですが、(2)が動作しません(TextBox1のHtmlが更新されない) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load WebBrowser1.Navigate(オッズURL):webcompflag = False Do While (webcompflag = False) System.Windows.Forms.Application.DoEvents() System.Threading.Thread.Sleep(10) Loop TextBox1.Text = WebBrowser1.Document.Body.InnerHtml End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = "" If Not WebBrowser1.Url.Equals("about:blank") Then WebBrowser1.Refresh() : webcompflag = False Do While (webcompflag = False) System.Windows.Forms.Application.DoEvents() System.Threading.Thread.Sleep(10) Loop TextBox1.Text = WebBrowser1.Document.Body.InnerHtml End Sub 何がいけないのか分かりません よろしくお願いします。

  • vb2005のWebbrowserについて

    vb2005のWebbrowserコントロールで表示さているhtmlの中に 「web_text」というテキストフィールドがある場合、 WebBrowser1.Document.All.GetElementsByName("web_text")(0).InnerText = "あああ" というコードを実行すると、テキストフィールドに「あああ」という文字が入りますが、 似たようなカンジで、チェックボックスのチェックを選択したり、 コンボボックスから値を選択したり、ラジオボタンを選択したりする 方法がわかりません。 どなたかご教授願いたく思っております。

  • vb2005 webbrowserでリンクをクリックした後の表示待ちの方法

    VB2005を勉強中の者です。 WebBrowser1.Navigateを使ってwebページを開いた際は下記while文での表示待ちが機能するのですが、ページ表示後、さらにInvokeMemberを使って先のページにクリックで進んだ後では同一の表示待ち部分がうまく機能せずにそのまま次の処理へと進んでしまいいます。 どこに問題があるのか分からず困っております。どなたか助けていただけませんでしょうか? WebBrowser1.Navigate("https://yahoo.co.jp") '↓ここは機能します While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() End While WebBrowser1.Document.GetElementsByTagName("a").Item(15).InvokeMember("click") '↓これが機能しなくて困っています! While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() End While '↓目的 TextBox1.Text = WebBrowser1.Document.Body.InnerText

  • C#のwebBrowserでの質問です。

    C#のwebBrowserでの質問です。 行いたい事としましては、C#のtextBoxツールへ入力した内容を WebBrowserコンポーネントにて表示させているWEBページの<input type="text"~> テキストフォームへ反映をさせたいのですが、これは可能でしょうか? 可能でありましたら、どのように行うと実現可能かを教えて頂ければ幸いです。 よろしくお願い致します。

  • C# htmlの一部の文字取得

    C#のwebBrowserで表示されているtextを表示させたいです。 htmlが <div class="AAA"> BBB </div> となっており、BBBのtextを取得したい場合、 HtmlElementCollection elem = webBrowser0.Document.GetElementsByTagName("div");   foreach (HtmlElement element in elem)   {    if (element.GetAttribute("class") == "AAA")  {  str = element.InnerText;  } } と、しましたが、上手く取得出来ません。 ご教授頂ければ助かります。

  • WebBrowserのURLプロパティについて

    質問です。 ある某サイトの画像取得するプログラムを作ってるのですが、 検索しても出てこないのでここで質問させて頂きます。 最初に[TextBox1] と[TextBox2]が二つあります。 そしてそのテキストボックスにはURLの ../585dDws/ ←等の文字列を入れて それをWebBrowserで取得して読み込みを行いたいのですが、 WebBrowser2.Navigate(New Uri("http://www.*****.jp" + TextBox1.Text + ":" + TextBox2.Text + "/index.html")) 及び WebBrowser2.url(New Uri の方も読み込みました。が無理です。 でButtonを押しても WebBrowser 内は真っ白で読み取ってくれません。 どの様にすれば詠み込んでくれるのでしょうか? 「+」と「&」等も変更してみましたが無理でした。