Webページを開き閉じられた事を知るには?


Oyakata  2007-11-16 11:07:51  No: 144099  IP: 192.*.*.*

お世話になります。
環境は WinXP , VB.NET2003 です。

ほぼタイトル通りの質問になりますが
System.Diagnostics.Process.Start("http://www.〜")
として開いたWebページ(ブラウザ)が閉じられた事を知る方法はあるでしょうか?

プロセスの管理で…

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '----------------------------------------
    ' 1.終了するまで待つ場合
    '----------------------------------------
    'Dim wProcess As New System.Diagnostics.Process
    'wProcess.StartInfo.FileName = "Notepad"
    'wProcess.Start()
    'wProcess.WaitForExit()
    'MessageBox.Show("終了しました")

    '----------------------------------------
    ' 2.終了イベントを発生させる場合
    '----------------------------------------
    Dim wProcess As New System.Diagnostics.Process
    wProcess.StartInfo.FileName = "Notepad"
    wProcess.EnableRaisingEvents = True
    AddHandler wProcess.Exited, AddressOf wProcess_Exited
    wProcess.Start()
End Sub

Private Sub wProcess_Exited(ByVal sender As Object, ByVal e As EventArgs)
    MessageBox.Show("終了しました")
End Sub

以上のような処理(制御)を行う事ができると思いますがwProcess.StartInfo.FileName に "http://www.〜" を設定してみると
1の方では、WaitForExit で例外が発生します。
            System.InvalidOperationException' のハンドルされていない例外が system.dll で発生しました。
            追加情報 : このオブジェクトに関連付けられているプロセスはありません。
2の方では、イベント自体が発生していない感じです。

何か別の方法でないと駄目なのか?
そもそも無理な事をやろうとしているのか?
何か助言を頂ければと思っています。よろしくお願いします。

編集 削除
Oyakata  2007-11-16 11:15:55  No: 144100  IP: 192.*.*.*

↑、適当なアドレスが思いつかなく、"〜"と記述してしまった結果
変なリンクを貼ったようになってしまい申し訳ありません。

編集 削除
Hongliang  2007-11-16 20:49:19  No: 144101  IP: 192.*.*.*

IE7 を含むタブブラウザなんかだと開いたページを閉じてもブラウザそのものは終了しなかったりしますがどうしましょう。
開いたページのリンクを踏んでほかのページへ遷移した場合とか。
IE 決め撃ちでいいなら、"InternetExplorer.Application" を CreateObject してあれこれやればそれなりに形にはできそうですが。

編集 削除
Oyakata  2007-11-18 01:01:42  No: 144102  IP: 192.*.*.*

Hongliangさん回答有難うございます。
なるほど…たしかにそうですよね…浅はかな考えでした。

現在、配布済みのシステムの操作改善を任されてまして
Winアプリなんですが、その中でちょっとしたダウンロード機能?を追加するらしく…
とは言っても実際は、別部隊がPerlか何か?で作成してくれる予定の
ダウンロードページを単純に表示してあげるだけなんですけど。
# System.Diagnostics.Process.Start("〜")に繋がる訳ですが…

ダウンロードページの方はダウンロードファイルが置いてあるだけで特に他のリンクもなく
ダウンロードするか?閉じるか?程度のシンプルな物になるそうです。

で、要は何がしたいのか?といいますと
ダウンロードが済んだらダウンロードファイルを解凍してあげられないかな?と策を練っておりました。
何十箇所に配布しているのですが、ユーザの中には年配の方やPCに詳しくない方も多いもので…
# エクスプローラ?Cドライブ?…なんて方も少々^^;

週明けにでも「IE 決め撃ちでいいなら〜」等も頭に入れて
何か良い方法がないか、また策を練りたいと思います。
長文失礼しました。

編集 削除
Hongliang  2007-11-18 09:49:41  No: 144103  IP: 192.*.*.*

そういうことなら、AxWebBrowser を使って自前でブラウザを用意してしまうのもいいかもしれません。イベント取り放題だし。

編集 削除
Oyakata  2007-11-20 10:56:48  No: 144104  IP: 192.*.*.*

Hongliangさん度々有難うございます。

> AxWebBrowser を使って自前でブラウザを用意して
未経験なため思いつきもしませんでした…
> イベント取り放題だし。
色々制御できそうで好印象です。

昨日から、本来メインとなる操作改善作業の合間に
少しずつですがWeb調査など始めはしたのですが…
・事前に何かを参照設定する?
・参考になるサンプルコードはないか?
・今回のケースではどのように使用すれば良さそうか?
等々…検索下手もあるのでしょうが中々良い情報を得れずです。

更なる助言を頂ければもちろん助かりますが、そうなると
手とり足とり1から教えて頂くのもご迷惑かと思いますので
別の案も考えつつ調査だけは地道に続けていこうと思います。

編集 削除