Flat lay of business concept
C#でアプリケーションを開発していると、「ユーザーをWebサイトへ誘導したい」「外部リンクを開きたい」といった場面がよくあります。そんなときに便利なのが、ブラウザを自動で起動し、指定のURLを開く方法です。この記事では、C#を使ってブラウザを起動する基本的な方法から、既定のブラウザではなく特定のブラウザを起動する方法、またクロスプラットフォーム対応まで、丁寧に解説します。初心者の方にもわかりやすくサンプルコードを交えてご紹介しますので、ぜひ参考にしてください。
C#でブラウザを起動する最も基本的な方法は、System.Diagnostics.Process.Start
メソッドを使うことです。このメソッドを使えば、簡単にURLを指定してブラウザを開くことができます。
using System.Diagnostics;
class Program
{
static void Main()
{
Process.Start("https://www.example.com");
}
}
上記のコードを実行すると、既定のブラウザ(Chrome、Edgeなど)で指定されたURLが開かれます。
ただし、.NET Core以降の環境では、少し工夫が必要になります。
.NET Frameworkでは単純にProcess.Start(url)
で開けましたが、.NET Core以降ではセキュリティやクロスプラットフォーム対応のため、明示的にプロセス情報を指定する必要があります。
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
var url = "https://www.example.com";
var psi = new ProcessStartInfo
{
FileName = url,
UseShellExecute = true
};
Process.Start(psi);
}
}
このように、UseShellExecute
をtrue
に設定することで、Windowsのシェルを使って既定のブラウザを起動できます。
既定のブラウザではなく、明示的にGoogle ChromeやMicrosoft Edgeを起動したい場合は、ブラウザの実行ファイルのパスを指定します。
using System.Diagnostics;
class Program
{
static void Main()
{
string chromePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe";
string url = "https://www.example.com";
Process.Start(chromePath, url);
}
}
Microsoft EdgeはChromiumベースに変わったため、msedge.exe
を指定します。
using System.Diagnostics;
class Program
{
static void Main()
{
string edgePath = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";
string url = "https://www.example.com";
Process.Start(edgePath, url);
}
}
パスが環境によって異なる可能性があるので、事前に存在チェックを入れるとより安全です。
.NET Core以降はWindowsだけでなく、LinuxやmacOSでも動作します。そのため、OSに応じた起動方法を切り替える必要があります。
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
class Program
{
static void Main()
{
string url = "https://www.example.com";
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true });
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
Process.Start("xdg-open", url);
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
Process.Start("open", url);
}
else
{
Console.WriteLine("対応していないOSです。");
}
}
}
このようにすれば、各OSで正しくURLをブラウザで開くことができます。
.NET Coreでは既定値が false
のため、UseShellExecute = true
にしないと起動しません。
一部の実行環境では Process.Start()
自体が制限されていることがあります。代替手段を検討する必要があります。
特定のブラウザを起動しようとする場合、実行ファイルの場所が正しいか確認してください。
C#でWindowsフォームアプリケーションを使って、ユーザー操作でブラウザを開くUIも作れます。
using System;
using System.Diagnostics;
using System.Windows.Forms;
public class BrowserForm : Form
{
private Button openBrowserButton;
public BrowserForm()
{
openBrowserButton = new Button
{
Text = "ブラウザを開く",
Width = 150,
Height = 40,
Top = 50,
Left = 50
};
openBrowserButton.Click += OpenBrowserButton_Click;
Controls.Add(openBrowserButton);
}
private void OpenBrowserButton_Click(object sender, EventArgs e)
{
var psi = new ProcessStartInfo
{
FileName = "https://www.example.com",
UseShellExecute = true
};
Process.Start(psi);
}
[STAThread]
public static void Main()
{
Application.Run(new BrowserForm());
}
}
このように、GUIアプリでも簡単にブラウザを起動できます。
C#でブラウザを起動する方法はとてもシンプルですが、.NETのバージョンやOSによって注意点が異なります。以下のポイントを押さえておくと安心です。
Process.Start(url)
だけでOKUseShellExecute = true
を明示的に設定RuntimeInformation
を使うちょっとしたリンク機能をアプリに加えるだけでも、ユーザー体験は向上します。ぜひ本記事の内容を活かして、あなたのアプリケーションに役立ててください。