No.2ベストアンサー
- 回答日時:
こんにちは
WebBrowserコントロールを使うとjavascriptを自由に実行して、値を取得できますが WebBrowserコントロールが使えない場合は少し時間がかかりますね。
WebBrowserコントロールを使ったサンプルです。
下記のhtmlから値を取得する場合です。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form name="js">
<input type ="text"id="n1" name="t1" value="" />
<input type="text" id="n2" name="t2" value="" />
<input type="button" id="n3" name="b" value="値" onclick="st()"/>
</form>
<script type="text/javascript">
function st() {
document.js.t1.value = "テスト1"
document.js.t2.value = "テスト2"
}
</script>
</body>
</html>
#簡単にするために各inputにidを付けていますので、idを手がかりにInvokeMember("click")でボタンをクリックしてjavascriptを実行します。
#input type="text"に値が表示されますので、GetAttribute("value")でinputの値を取得します。
#idの値を手がかりにしてinputの値を取得してListBox1に表示します。
Public Class Form1
Dim ur As String = "http://~~~~l"
Private Sub f() Handles MyBase.Shown
WebBrowser1.Navigate(ur)
WebBrowser1.Visible = False 'WebBrowser1を非表示にする
End Sub
Private Sub WebBrowser1_DocumentCompleted(sender As System.Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
ListBox1.Items.Clear()
Dim txt1 As String
Dim txt2 As String
If sender.url.ToString = e.Url.ToString Then
'ボタンをクリックしてjavascriptを実行
WebBrowser1.Document.GetElementById("n3").InvokeMember("click")
'inputに値を入力
txt1 = WebBrowser1.Document.GetElementById("n1").GetAttribute("value")
txt2 = WebBrowser1.Document.GetElementById("n2").GetAttribute("value")
Dim wre As Net.WebRequest = Net.WebRequest.Create(ur)
Dim wrs As Net.WebResponse = wre.GetResponse()
Dim st As IO.Stream = wrs.GetResponseStream()
Dim reader As New System.IO.StreamReader(st)
Dim line As String
line = reader.ReadLine
Do Until IsNothing(line)
'idの値を手がかりにしてinputの値を取得してListBox1に表示
If line.Contains("id=""n1""") Then
ListBox1.Items.Add(txt1)
ElseIf line.Contains("id=""n2""") Then
ListBox1.Items.Add(txt2)
End If
line = reader.ReadLine
Loop
reader.Close()
End If
End Sub
End Class
この回答へのお礼
お礼日時:2013/04/22 14:38
質問の書き方が悪かったようですいません。
javascriptがタイマーで定期的に自動更新する値を取得したいという事だったのです。
この場合WebBrowserを使えばもちろん取得できます。
しかしWebBrowserは遅くて重いため使いたくなかったので・・・
ありがとうございました。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- MySQL htmlコードで書かれた表にphpでdbから取得した値を挿入したい 3 2022/12/21 23:48
- JavaScript HTMLでJavaScriptを使用してプログラムを作ります。 入力されたパスワードを取得して、パス 2 2022/10/18 01:05
- Instagram HTML5の廃止とJavaScript 2 2022/04/13 21:05
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- JavaScript テーブルの中のセレクトボックスの値が0のとき、非表示にしたい 3 2022/05/29 10:13
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
Excel VBAのリストボックスの値...
-
VB初心者。小数点以下の表示で...
-
マクロ 特定のセル値のみクリ...
-
DataTableに対するLINQについて
-
ハッシュテーブル(連想配列)が...
-
PysimpleGUIでデータベースを作る
-
power BI クエリエディター 〇...
-
PL/SQLでのTO_DATEの時間取得に...
-
C#の質問です
-
ユーザーフォームのテキストボ...
-
VBA(自然数)
-
VBAで、オートフィルタで非表示...
-
windowsアプリケーションで小数...
-
変数に代入してある数値を表示...
-
sin(π)が0にならないです
-
RegisterClassExのエラー原因
-
refreshでパラメータ引継ぎ
-
検索エンジンにかからないサイ...
-
【C++/CLI.NET】コンボボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
マクロ 特定のセル値のみクリ...
-
VB.NETでコンボボックスの1行目...
-
変数名の取得
-
値を返さないコード パス
-
Excel VBAのリストボックスの値...
-
VB初心者。小数点以下の表示で...
-
ハッシュテーブル(連想配列)が...
-
textboxとLabelを動的に変更する
-
PL/SQLでのTO_DATEの時間取得に...
-
VB.NETでアクティブなformを知...
-
Excel vba ユーザーフォームテ...
-
DataTableに対するLINQについて
-
マクロで奇数と偶数の値を2か所...
-
【C++/CLI.NET】コンボボックス...
-
[VBA]選択範囲の下から上に処理...
-
変数に代入してある数値を表示...
-
vbscriptを使いexcelを参照して...
-
範囲が指定されている乱数について
-
[VB.net] DataGridViewのコンボ...
おすすめ情報