WinXP,7のIE8にて新規セッションで起動 削除
Message#8 2014年12月26日(金)09時55分 From: 旅しぐれ |
私が先に提案した方法では実現がかなり面倒そうということが わかりましたので、方針を転換します。以下にサンプルコード を作ってみましたので、こちらを参考にしてみてください。 注1) このサンプルでは、IEの起動に失敗した場合は無限ループが 発生してフリーズ状態になります。その問題の対処は、まぁ、 そちらで工夫してください。------------------------------------------------------------ ' 指定されたウィンドウを作成したスレッドの ID を取得するAPI関数 ' http://msdn.microsoft.com/ja-jp/library/cc364779.aspx Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, ByRef ProcessId As Long) As Long Public Sub ろぐいん() ' IE を起動 Dim IEProcessId As Long ' 起動した IE のプロセスID IEProcessId = Shell("""C:\Program Files\Internet Explorer\iexplore.exe"" -noframemerging ""http://""") ' 起動した IE を探す Dim IE As Object Dim ShellObject As Object Set ShellObject = CreateObject("Shell.Application") Do While True ' エクスプローラのリストを取得し、その中から起動したIEを探す For Each Explore In ShellObject.Windows() ' 候補のエクスプローラのプロセスIDを取得 Dim CurrentProcessId As Long Call GetWindowThreadProcessId(Explore.hwnd, CurrentProcessId) ' 起動した IE のプロセスIDと比較 If CurrentProcessId = IEProcessId Then ' 見つけた IE のオブジェクトを回収 Set IE = Explore ' IE が見つかったので、Whileループを抜ける Exit Do End If Next ' ここに処理が来たときは、IEが見つからなかった ' (まだIEが起動中の場合は見つけることができない) ' 1秒待ってリトライする Call Application.Wait(Now + TimeValue("00:00:01")) Loop Set ShellObject = Nothing ' ここから先は元のコードが使えます ' 文字入力 IE.document.getElementById("ID").Value = UserID IE.document.getElementById("PASS").Value = UserPass (以下省略) |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。