• 締切済み

InternetExplorerとHTMLDocumentについて

VB.netよりShell.Applicationを用いて、その時点開いているウインドウの数分ループさせてWindowオブジェクトごとのDocumentを見比べてInternetExplorerを発見しようとしているのですが、なぜかIEのDocumentがHTMLDocumentを返さず、Explorerと同じComObjectとなります。 何かご存知の方いらっしゃいましたら、ご教授お願い致します。 loshell = CreateObject("Shell.Application") lowindows = CallByName(loshell, "Windows",                    CallType.Method) For liCnt = 0 To CInt(CallByName(lowindows, "Count", CallType.Get)) - 1 loexp = CallByName(lowindows, "Item", CallType.Get, liCnt) lodocument = CallByName(loexp, "Document", CallType.Get) If lodocument.GetType().Name Like "HTMLDocument*" Then End IF NEXT   

みんなの回答

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2
参考URL:
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29515&forum=7&3
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

直接の回答じゃないんですけど System.Diagnostics.Process.GetProcesses から プロセスコレクションを得て ProcessName で調べればいいんじゃないでしょうか? 経験的にはIEってActiveX そのものだと認識しております<勘違いコメントだったらすみません。

関連するQ&A

  • Shell.ApplicationでのIEオブジェ

    目的のタブページのオブジェクトを取得することに成功したのですが、質問があります。 コードはVBSで書いています。 Dim objIE Set Shell=Wscript.CreateObject("Shell.Application") for each tmp in Shell.Windows if TypeName(tmp.document)="HTMLDocument" then'HTMLDocumentかつ if tmp.document.title="Google" then'そのページのタイトルが「Google」なら set objIE=tmp'代入 end if end if Next if objIE="" then WScript.Echo("目的のページが表示されてないっぽいです") WScript.Quit end if 'この時点で、objIEがその目的のページでのオブジェクト ここで、 objIE.alert("hoge")とできないのはどうしてなのでしょうか? alertはjavascriptの関数?だからですか?? でも、objIE.document.write("hoge")で、documentオブジェクトが使えるのはどうしてなんですか? documentオブジェクトはjavascirptのオブジェクトじゃないんですか? それともう1つ、上記コードの場合ですが、JSの場合 Shell.Windows.item(0)というので参照?できるっぽいですが、itemというメソッドはjavascirptだけのものなのでしょうか?vbsでは使えないのですか?何故なんですか?同じcomオブジェクトを参照してるんじゃないんですか?(?) どのオブジェクトがどれで、どのメソッドがどれなのかわからなくなります。 あと1つだけ! 上記コードでの、tmp.documentとはなんなのでしょうか?HTMLDocumentとは・・w 頭が混乱してます。どなたか回答よろしくお願いいたします。

  • VBのコードが理解できません 解説いただけないでしょうか?

    Dim ObjIE As Object Dim ObjShell As Object Dim ObjWindow As Object Dim WinExist As Boolean WinExist = False Set ObjShell = CreateObject("Shell.Application") For Each ObjWindow In ObjShell.Windows If TypeName(ObjWindow.Document) = "HTMLDocument" Then  WinExist = True  Set ObjIE = ObjWindow End If Next Set ObjShell = Nothing If Not WinExist = True Then Set ObjIE = CreateObject("InternetExplorer.Application") End If ObjIE.Navigate "http://nantokakantoka.html" ObjIE.Visible = True このコードを解説いただけないでしょうか? 特に WinExist For Each ObjWindow In ObjShell.Windows If TypeName(ObjWindow.Document) = "HTMLDocument" Then が何をしているのか分からないんです。

  • 現在開いている全てのIEのURLのタイトルを取得し

    現在開いている全てのIEのURLのタイトルを取得したいのですが Sub test() Dim shl As Object Dim wnd As Object Dim doc As Object Dim frg As Boolean Set shl = CreateObject("Shell.Application") For Each wnd In shl.Windows() If TypeName(wnd.Document) = "HTMLDocument" Then Set doc = wnd.Document Debug.Print doc.Title Set doc = Nothing End If Next Set shl = Nothing End Sub このコードが If TypeName(wnd.Document) = "HTMLDocument" Then でエラーになる時とならない時があります。 エラーになる時は、 実行時エラー -2147467259 ’Document’メソッドは失敗しました:'IWebBrowser2'オブジェクト となります。 エラーが発生する時としない時の違いが分かりません。 そもそもどういう意味のエラーでしょうか? IE11、オフィス2010です。

  • VBAで起動しているIEの操作

    IEでOKWAVEを開いていたら イミディエイトウィンドウに タイトルを表示するのに 次の 記述をしましたが エラーになりました。 実行時エラー '-2147467259 (80004005)': 'Document' メソッドは失敗しました: 'IWebBrowser2' オブジェクト なぜでしょうか? IEは11です。 エクセルは2013 OSは windows7 ホームプレミアム vbsは次の通り Sub okwave() Dim colSh As Object Dim win As Object Dim strTemp As String Dim objIE As Object Set colSh = CreateObject("Shell.Application") For Each win In colSh.Windows If TypeName(win.document) = "HTMLDocument" Then If InStr(win.document.Title, "okwave") > 0 Then Set objIE = win Exit For End If End If Next Debug.Print objIE.document.Title End Sub

  • VBでContinueを使うには?

    VBScriptでContinueが出来ないときと出来るときがあって困っています。 Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows If TypeName(objWindow.Document) <> "HTMLDocument" Then Continue End If こういったコードがあるのですがContinueでエラーが出たり出なかったりします。 自分の開発機ではでないのですが、配ったプログラムの使用者では出たり出なかったりします。 何がいけないのでしょうか? 回避策を探しているのですがどうしたらいいかわかりません。

  • VBS 既に開いているIEを操作

    以下のコードで既に開いているIEをアクティブ化しています。 Dim objIE set Shell=Wscript.CreateObject("Shell.Application") for each tmp in Shell.Windows if TypeName(tmp.document)="HTMLDocument" then if tmp.LocationURL="指定URL" then set objIE=tmp end if end if Next 指定URLの部分を完全に一致していた場合ではなく、一部が一致していたら、そのIEをアクティブ化するようにしたいです。可能ならば方法を教えて欲しいです。

  • VBで擬似Continueを行いたいのですがよくわかりません。

    このようなコードを使いたいのですが・・・ Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows If TypeName(objWindow.Document) <> "HTMLDocument" Then Continue End If これに対応したやり方というのを下記サイトで見つけました。 http://mga.cocolog-nifty.com/pc_info/2006/11/vbscript_tips1__7a8f.html clip ただどういうう風に書き直したらいいか分からなく困っています。 どなたか解説いただけないでしょうか?

  • IE操作で別タブ表示のHTMLソースの取得方法は?

    VB.NET(VB 2010 Express)でIE9をWebBrowserコントロールではなく直接操作しています。 先にここで、あるサイトのトップページを表示し、それにユーザID、パスワードを入力し、ログオンボタンをクリックして次のページを別タブで表示する方法を教えて頂きました。 そこで、別タブに表示した次ページのHTMLソースを取得する方法として、下記のコードを教えて頂きました。 Dim objIE As Object objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate("http://login.yahoo.co.jp/") Do While objIE.Busy System.Threading.Thread.Sleep(500) Loop objIE.Document.login_form.login.Value = "xxxxx" 'ユーザIDを入力 objIE.Document.login_form.passwd.Value = "yyyyy" 'パスワードを入力 objIE.Document.login_form.target = "_blank" '別ページに表示 objIE.Document.login_form.submit() Dim Shell As Object Dim win As Object Dim newObjIE As Object Shell = CreateObject("Shell.Application") For Each win In Shell.Windows If TypeName(win.document) = "HTMLDocument" Then 'このif文がTrueにならない If win.document.URL = "http://yahoo.co.jp" Then newObjIE = win Exit For End If End If Next しかし、コメントのあるif文がTrueにならないようです。修正方法を教えて頂きたくよろしくお願い致します。

  • myObjにタグを格納してループはできない?

    MSXML2.XMLHTTPの時は、 myObjにタグを格納してループはできないのでしょうか? Sub test() Dim objIE As Object Dim myObj As Object Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", "http://○○.html", False objIE.send For Each myObj In objIE.Document.all.tags("p") Next Set objIE = Nothing End Sub 上記だと実行時エラー438になります。 Set objIE =CreateObject("InternetExplorer.Application") でループしないとダメでしょうか? Set objIE =CreateObject("InternetExplorer.Application") は時間がかかるので、できれば Set objIE =CreateObject("MSXML2.XMLHTTP") でやりたかったのですが、タグを格納できないのでしょうか?

  • VBSでとある条件の時に処理をやらずに終了させる方法

    VBSでとある条件の時に処理をやらずに終了させる方法で悩んでいます。 Dim ObjIE Dim ObjShell Dim ObjWindow Dim WinExist WinExist = False Set ObjShell = CreateObject("Shell.Application") For Each ObjWindow In ObjShell.Windows If TypeName(ObjWindow.Document) = "HTMLDocument" Then WinExist = True Set ObjIE = ObjWindow End If Next Set ObjShell = Nothing If Not WinExist = True Then Set ObjIE = CreateObject("InternetExplorer.Application") End If ・ ・ ・ ・ 例えばこのように起動しているIEを探します そこでもしYahoo!JAPANが起動していたら以降の処理をやらずに終わらせたいのですが・・・ どのような記述にすればよいでしょうか?