Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
Process.Start(url)で開いたブラウザそのもののプロセスを取得したい
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31008#CommentId86374
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
ポッキー
 (社会人)
投稿日時
2025/3/3 16:04:19
指定したurlのWebサイトを「関連付けられたアプリケーションでファイルを開く」の方法を応用して開くことはできました。
関連付けられたアプリケーションでファイルを開く
https://www.umayadia.com/vbsample/sample0000/Sample093ShellEx.htm
例えば、
Dim p As Process = Process.Start("https://www.umayadia.com/")
を実行すると、通常使用するブラウザがChromeの場合、Chromeが起動し、ここにVisual Basic 中学校のトップページが表示されます。
すでにChromeが起動している場合、起動中のChromeの新しいタブに指定ページが表示されます。
これはこれでいいのですが、その場合、そのChromeブラウザが手前に表示されないことがあります。
この場合、どのようにすればそのChromeブラウザを手前に表示できるようになりますか?
色々調べたところ、Win32 APIのSetForegroundWindowを使用すれば、そのWindowを全面表示できるようですが、
今回のケースでは対象ブラウザのWindowHandleが必要になります。
そこで、上記で取得したProcessオブジェクトのMainWindowHandleを取得しようとすると、
「System.InvalidOperationException: プロセスは終了しているため、要求された情報は利用できません。」
という例外が出ます。
おそらく、上記で取得したProcessオブジェクトは通常使用するブラウザのプロセスではなく、
ファイルの関連付けで起動したShellか何かなのだろうと思いますが、
Process.Startでページを開いたブラウザのプロセスの取得方法を知りたくて、質問しました。