IE7でのタブブラウザ処理時のエラー

解決


doratch  2008-02-07 11:58:58  No: 144402

お世話になります。

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)  のように指定した場合は問題が起こらないのですが、ここには変数が使えないのでしょうか?

それとも、プログラムが根本的に間違っているのでしょうか?

アドバイスをいただけましたら幸いです。

どうぞよろしくお願いいたします。


(報告)  2008-02-08 10:21:59  No: 144403

マルチリンク
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2802651&SiteID=7

解決したならマルチ投稿先全てに結果報告すべし。
こんなだからマルチは嫌われるのさ。


doratch  2008-02-08 12:28:30  No: 144404

上級者さんがご指摘のように、他の掲示板におきまして、
item((i))と書いて変数を値渡し(ByVal)せよとのアドバイスを受けて、本件は無事に解決しました。

ただ、経緯を申し上げておきますと、ご指摘の掲示板に投稿したところ、10分ほど経過しても投稿した記事が表示されませんでした。

そのため、その投稿が不成功だと思い、こちらの掲示板に投稿させていただいた次第です。

ところが翌日に、不成功だったと思った掲示板に投稿されていたのです。
マルチ投稿はまずいと思い、どちらかの記事を消そうと思いましたが、どちらも消せませんでした。

このような経緯があったことをお察しいただければと思います。

ただ、ご指摘いただいたように、解決後、すぐにこちらの掲示板にもご報告すべきでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加