自宅サーバの整理箱

自宅サーバを構築しwordpress,fedora,CentOSの作業メモ

*

vb.netでieを自動操作、InternetExplorerを新規セッションで作成する

   

vb.netでインターネットエイクスプローラーを自動操作する方法はネット検索するといくつか紹介されています。

images
私が仕事の上でこまったのは、複数のインターネットエクスプローラーを起動して、それぞれ別セッションでページを表示して、自動操作することでした。
1台のパソコンでセッションを分けて複数画面を操作させるために、IEを新規セッションで起動させることが目的です。

 
vb.netでインターネットエクスプローラーを操作する場合、ほとんどのサイトで紹介されている方法はこれ
 

'インターネットエクスプローラーのオブジェクトを作る
'objIE = CreateObject("InternetExplorer.application")

 
たしかに、これはすごく便利です。
でもこの方法だと新規セッションでインターネットエクスプローラーを作成することはできませんでした。

 
そこで、以下の方法で実現させましたので、ノウハウとしてご紹介アンド備忘録になります。

 

Dim objIE As New SHDocVw.InternetExplorer
Dim obj As Object 'IEオブジェクト参照用
Dim strURL As String = "http://www.hogehoge.com"

'インターネットエクスプローラーのオブジェクトを作る
obj = CreateObject("Shell.Application")
System.Diagnostics.Process.Start("C:Program FilesInternet Exploreriexplore.exe", "-noframemerging" & " " & strURL)
System.Threading.Thread.Sleep(1000)
objIE = CType(obj.Windows(obj.Windows.Count - 1), SHDocVw.InternetExplorer)

 
System.Diagnostics.Process.Start(“C:Program FilesInternet Exploreriexplore.exe”, “-noframemerging” & ” ” & strURL)
ここで、internetexploreを起動しますが、”-noframemerging”を第一引数につけることで、「新規セッション」で起動させます。

 
起動したインターネットエクスプローラーオブジェクトを補足します。
ここでは、超簡易的に一番最後に起動したプロセスであろう! とい仮定から
System.Threading.Thread.Sleep(1000)
objIE = CType(obj.Windows(obj.Windows.Count – 1), SHDocVw.InternetExplorer)

 
このようにしました(笑)。正確にはループしてタイトル等で判定すべきとおもいます。(少し手抜きです)System.Threading.Thread.Sleep(1000)は、補足までの時間が早すぎて、補足できない場合があるため、少し待ちました。。

 
このShell.Applicationで作成したオブジェクトを補足し、IEオブジェクト「SHDocVw.InternetExplorer」でキャストしてあげて、objIE に代入します。

 
基本的なながれはこれでできます。あとはエラー処理は適所に入れていただければある程度使い物になると思います。
 
以上、vb.netをつかってインターネットエクスプローラーを新規セッションで補足する方法でした。
これができると1つのアプリケーションで複数のインターネットエクスプローラを新規セッションでどんどん作成することができます。

 - InternetExplorer, スクレイピング

 Total 4,444 views