VBで既存のブラウザ(私はIEですが)の更新を制御するにはどうすればいいのでしょう?
F5ボタンの命令をブラウザに送ることができればいいのですが、その仕方もわかりません。
ちなみにVBは6.0か.NETのどちらでもかまいません。
よろしくお願いします。
IE固定で良ければ、Refresh2メソッドを呼び出せばOKです。
ただ、「既存のブラウザ」全てに対応させるのは無理かと思います。
全てのブラウザが、F5で更新されるようになっているという保証は無いですし、
そもそも、更新ボタンが無いブラウザもあるかもしれませんし。
# まぁ、ほとんどのブラウザは、更新ボタンぐらいは持っていますけれどね。
実際にRefreshメソッドを利用して作ってみました。
現在一定時間ごとにブラウザを更新するプログラムを作成したいのですが、ブラウザを開いた後。
Private Sub Timer1_Timer()
Set Win = Wscript.CreateObject("Shell.Application")
Set IE = Wscript.CreateObject("InternetExplorer.Application", "IE_")
Refresh2 = (REFRESH_NORMAL)
End Sub
このようなプログラムを書いて実行してみたのですがオブジェクトが必要ですというエラーメッセージが出ます。
オブジェクトとは具体的に何が足りないのでしょうか?
ちなみにブラウザはIE6.0です
> Set Win = Wscript.CreateObject("Shell.Application")
そのコードは、VBScript用の記述ですよ。
WScriptオブジェクトはVBからは利用できません。
VB6のCreateObject関数が、WScript.CreateObjectメソッドに近い機能を
持っていますので、そちらで代用してください。
> Set IE = Wscript.CreateObject("InternetExplorer.Application", "IE_")
これもVBScriptの記述ですよね。VBScriptは、CreateObjectの第2引数を使ってイベントプロシージャ名を決定しますが、VBは「WithEventsキーワード」を使って宣言した変数によって、イベントを受け取ります。
それと、「既に起動しているIEを制御したい」のか、それとも「プログラムからIEを起動し、そのIEを制御したい」のかによってもコーディングに差がでます。(今回の場合は、どちらをお望みですか?)
> Refresh2 = (REFRESH_NORMAL)
「Refresh2という変数に、REFRESH_NORMALという値を代入する」のではなく、
「InternetExplorerオブジェクトのRefresh2メソッドを呼び出す」ようにしてみてください。
VBScriptだったのですか。
今回は2つのコマンドボタンを用意して一つ目のボタンでIEを起動して2つ目のボタンで更新という具合の処理をしたいんです。
> VBScriptだったのですか。
あ、ご自身で考えられたコードではなかったのですか。
(VBScriptに慣れていて、VB6/VB.NETに慣れていない方なのかと思っていました)
> 今回は2つのコマンドボタンを用意して一つ目のボタンでIEを起動して2つ目のボタンで更新という具合の処理をしたいんです。
やり方は幾つかあるでしょうが、例えばこんな感じで如何でしょう。
'-----------------------------------------------
Option Explicit
Private IE As Object 'As InternetExplorer
Private Sub Command1_Click(Index As Integer)
If Index = 0 Then
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate2 "http://www.google.co.jp/"
IE.Visible = True
Else
IE.Refresh2
End If
End Sub
'-----------------------------------------------
Option Explicit On
Option Strict On
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows フォーム デザイナで生成されたコード "
#End Region
Private IE As Object
Private Sub Button_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles Button1.Click, Button2.Click
If sender Is Me.Button1 Then
IE = CreateObject("InternetExplorer.Application")
CallByName(IE, "Navigate2", CallType.Method, "http://www.google.co.jp/")
CallByName(IE, "Visible", CallType.Let, True)
Else
CallByName(IE, "Refresh2", CallType.Method)
End If
End Sub
End Class
'-----------------------------------------------
厳密には、Refresh2メソッドを呼べる状態かどうかを調べたり、
IEがユーザーによって閉じられたかどうかなどを調べる必要もありますが、
基本的には、上記のような感じになるかと思います。
あのプログラムはサンプルプログラムを参考にして作ってみたんです。
実際に魔界の仮面弁士さんがおっしゃったとおりにやってみたところブラウザが開き指定のページが開きました。
そして更新のほうなのですが、後ろのほうの
Option Explicit On
Option Strict On
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows フォーム デザイナで生成されたコード "
#End Region
Private IE As Object
Private Sub Button_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles Button1.Click, Button2.Click
If sender Is Me.Button1 Then
IE = CreateObject("InternetExplorer.Application")
CallByName(IE, "Navigate2", CallType.Method, "http://www.google.co.jp/")
CallByName(IE, "Visible", CallType.Let, True)
Else
CallByName(IE, "Refresh2", CallType.Method)
End If
End Sub
End Class
このプログラムはどの部分に記述すればよろしいでしょうか?
初心者ですみませんm(_ _)m
いつも丁寧なご説明ありがとうございます。本当に感謝しております。