前提
あるアプリ内で、ClickOnceアプリの起動を行っています。
Windows11の環境で動かすとClickOnceアプリ起動時にEdgeの確認メッセージと白いタブが表示されてしまいます。
実現したいこと
Edgeの確認メッセージや、白いタブを表示させずにClickOnceアプリを起動したいです。
試したこと
フォームに以下の3つのボタンを配置して、挙動を確認しました。(ソースを参照ください)
(1)プロセス起動(IE)
(2)プロセス起動(Edge)
(3)COM起動
(1)~(3)のどれでも、ClickOnceアプリの起動自体は出来るのですが、
(1)(2)は、Edgeが起動し、「このファイルを開きますか?」のダイアログが表示されます。
「開く」を選択するとClickOnceアプリが起動し、白いタブが表示されたEdgeが残ります。
(3)は、挙動的には問題ないのですが、内部的に「SHDocVw.InternetExplorer」を使用しているので、出来れば避けたいです。
(3)の挙動をCOMを使用せずに実現する方法があれば教えていただきたいです。
Edgeの設定などで対応できないか調べてはみたのですが…見つけられませんでした…。
using System.Runtime.InteropServices; namespace WindowsFormsApp { public partial class Form1 : Form { private string url = @"http://xxxxx/test_dev.application?ARG1={0}&ARG2={1}"; private const string ARG1 = "hoge"; private const string ARG2 = "hogehoge"; [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SetForegroundWindow(IntPtr hWnd); public Form1() { InitializeComponent(); } /// <summary> /// (1)プロセス起動(IE)ボタンを押したときの処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ProcessIEbutton_Click(object sender, EventArgs e) { Process.Start(new ProcessStartInfo() { FileName = "iexplore.exe", Arguments = string.Format(url, ARG1, ARG2), CreateNoWindow = false, RedirectStandardOutput = false, WindowStyle = ProcessWindowStyle.Minimized, UseShellExecute = true, }); } /// <summary> /// (2)プロセス起動(Edge)ボタンを押したときの処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ProcessEdgebutton_Click(object sender, EventArgs e) { Process.Start(new ProcessStartInfo() { FileName = "MicrosoftEdge.exe", Arguments = string.Format(url, ARG1, ARG2), CreateNoWindow = true, RedirectStandardOutput = false, WindowStyle = ProcessWindowStyle.Minimized, UseShellExecute = true, }); } /// <summary> /// (3)COM起動ボタンを押したときの処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void COMbutton_Click(object sender, EventArgs e) { //オブジェクトを作成 SHDocVw.InternetExplorer objIE = new SHDocVw.InternetExplorer(); objIE.Navigate(string.Format(url, ARG1, ARG2)); //IEを非表示 objIE.Visible = false; //最前面表示 SetForegroundWindow((IntPtr)objIE.HWND); } } }
補足情報(FW/ツールのバージョンなど)
VisualStudio2017
.NetFramework 4.6.1
Edge バージョン 99.0.1150.55 (公式ビルド) (64 ビット)
→EdgeのClickOnce SupportはEnableにしています。

あなたの回答
tips
プレビュー