Поскольку вы написали, что используете WinForms, я предполагаю, что вы используете Windows. AFAIK Есть 2 способа сделать это - с помощью класса Process
или с помощью WinAPI.
Я не буду описывать вариант WinAPI, потому что он длиннее и сложнее, также я не использую его (большинство задач можно выполнить с использованием чистого C#).
Вы можете вызвать этот метод в вашем button.Click
обработчике событий:
private void DetectOpenBrowser()
{
var detector = new BrowserDetector();
if (detector.BrowserIsOpen())
{
MessageBox.Show(this, "Browser Was Detected As Open", "Success", MessageBoxButtons.OK);
}
else
{
MessageBox.Show(this, "Please Open Browser", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Класс BrowserDetector:
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
internal class BrowserDetector
{
private readonly Dictionary<string, string> browsers = new Dictionary<string, string>
{
{
"firefox", "Mozilla Firefox"
},
{
"chrome", "Google Chrome"
},
{
"iexplore", "Internet Explorer"
},
{
"MicrosoftEdgeCP", "Microsoft Edge"
}
// add other browsers
};
public bool BrowserIsOpen()
{
return Process.GetProcesses().Any(this.IsBrowserWithWindow);
}
private bool IsBrowserWithWindow(Process process)
{
return this.browsers.TryGetValue(process.ProcessName, out var browserTitle) && process.MainWindowTitle.Contains(browserTitle);
}
}
Примечания
I'm не уверен, есть ли у всех браузеров свое имя в заголовке окна, я просто проверил те, которые у меня есть
Для добавления других браузеров вам потребуется найти имя процесса в диспетчере задач, вкладка «Сведения» - например, для Firefox запись «firefox .exe», поэтому имя процесса «firefox ». Если существуют разные имена процессов, такие как «MicrosoftEdge» и «MicrosoftEdgeCP», вам нужно немного поэкспериментировать, чтобы выяснить, какой процесс имеет главное окно.