お世話になります。
VB初心者ですが、IE7でのタブブラウザの生成と、生成された情報を取得するプログラムの作成に挑戦中です。
OS:Windows Vista home premium
ブラウザ:IE7
VB:VB2005 Express Edition
IE7を起動した後で、下記のプログラムを実行すると、タブブラウザが新たに2個生成されます。
また、Windowsの名前とURLを取得し、表示するようにしています。
Const navOpenInNewTab = &H800
Dim objShell
Dim a, b, i
'タブブラウザを2個生成
objShell = CreateObject("Shell.Application")
objShell.Windows.Item(objShell.Windows.Count - 1).Navigate2("http://www.yahoo.co.jp", navOpenInNewTab)
objShell.Windows.Item(objShell.Windows.Count - 1).Navigate2("http://www.google.co.jp", navOpenInNewTab)
'タブブラウザが起動するのを待つ
System.Threading.Thread.Sleep(1000)
'--------------------------------------------------------------------
'IE起動後直後のURL
a = objShell.Windows.item(0).Fullname
b = objShell.Windows.item(0).LocationURL
MsgBox(a)
MsgBox(b)
'新規に生成されたタブブラウザ1番目のURL
a = objShell.Windows.item(1).Fullname
b = objShell.Windows.item(1).LocationURL
MsgBox(a)
MsgBox(b)
'新規に生成されたタブブラウザ2番目のURL
a = objShell.Windows.item(2).Fullname
b = objShell.Windows.item(2).LocationURL
MsgBox(a)
MsgBox(b)
'--------------------------------------------------------------------
ここまでは、無事に動作しました。
ところが、'--------------------------------------------------------------------で囲った箇所を次のように変更したところ、
'--------------------------------------------------------------------
for i = 0 to 2
a = objShell.Windows.item(i).Fullname
b = objShell.Windows.item(i).LocationURL
MsgBox(a)
MsgBox(b)
i = i + 1
'--------------------------------------------------------------------
a = objShell.Windows.item(i).Fullname
の箇所で、
「パラメータが間違っています。 (HRESULT からの例外: 0x80070057 (E_INVALIDARG))」
というエラーが表示されます。
どうも、item(i)というように、()内に変数を使うときにエラーが起こっているような気がします。
手打ちで、item(0) や item(1) のように指定した場合は問題が起こらないのですが、ここには変数が使えないのでしょうか?
それとも、プログラムが根本的に間違っているのでしょうか?
アドバイスをいただけましたら幸いです。
どうぞよろしくお願いいたします。
マルチリンク
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2802651&SiteID=7
解決したならマルチ投稿先全てに結果報告すべし。
こんなだからマルチは嫌われるのさ。
上級者さんがご指摘のように、他の掲示板におきまして、
item((i))と書いて変数を値渡し(ByVal)せよとのアドバイスを受けて、本件は無事に解決しました。
ただ、経緯を申し上げておきますと、ご指摘の掲示板に投稿したところ、10分ほど経過しても投稿した記事が表示されませんでした。
そのため、その投稿が不成功だと思い、こちらの掲示板に投稿させていただいた次第です。
ところが翌日に、不成功だったと思った掲示板に投稿されていたのです。
マルチ投稿はまずいと思い、どちらかの記事を消そうと思いましたが、どちらも消せませんでした。
このような経緯があったことをお察しいただければと思います。
ただ、ご指摘いただいたように、解決後、すぐにこちらの掲示板にもご報告すべきでした。
ツイート | ![]() |