Нужно в моей программе, в WebBrowser открывать ссылки, передаваемые сторонней программой через командную стороку, т.е к примеру "My.exe
google.com", но что бы моя программа не запускалась каждый раз снова, а страница обновлялась в имеющемся WebBrowser уже запущенной My.exe.
Запрет запуска второго экземпляра программы реализовал так:
C#[STAThread]
static void Main()
{
Application.EnableVisualStyles();
SingleInstanceApplication.Run(new Form1(), StartupNextInstanceHandler);
}
static void StartupNextInstanceHandler(object sender, StartupNextInstanceEventArgs e)
{
// не совсем понимаю надо ли это мне и что тут должно быть
}
public class SingleInstanceApplication : WindowsFormsApplicationBase
{
private SingleInstanceApplication()
{
base.IsSingleInstance = true;
}
public static void Run(Form f, StartupNextInstanceEventHandler startupHandler)
{
SingleInstanceApplication app = new SingleInstanceApplication();
app.MainForm = f;
app.StartupNextInstance += startupHandler;
app.Run(Environment.GetCommandLineArgs());
}
}
Дальше:
C#public Form1()
{
SetBrowserFeatureControl(); // прописываются ключи в реестр
InitializeComponent();
webBrowser1.ScriptErrorsSuppressed = true;
string[] arg = Environment.GetCommandLineArgs();
string login;
string password;
if (arg.Length == 2)
{
if (CheckURL(@arg[1]))
{
webBrowser1.Navigate(@arg[1]);
MessageBox.Show("Должна открыться новая страница " + @arg[1]); // debug
}
}
// дальше другой код
}
Если программу с параметром запускать первый раз (соответственно с параметром командой строки), то все хорошо, страница открывается, но если повторно попробовать запустить (передав ей новый адрес в качестве параметра), то страница не обновляется. При этом сообщение "
Должна открыться новая страница " отображается с нужным новым адресом, т.е. до этого места доходит, но webBrowser1.Navigate не отрабатывает.
Не пойму что не так и в какую сторону смотреть...