Hallo Forum,
ich habe eine Applikation, die pro Anwender nur einmal gestartet werden darf. Sprich pro User eine aktive Instanz. Nun kommt die Anforderung hinzu, dass beim Öffnen weiterer mit dieser Applikation verknüpfter Dokumente diese auch in der Applikation geöffnet werden sollen. Ihr kennt das Verhalten von Excel.
Um zu prüfen, ob die Applikation bereits gestartet ist verwende ich den auf CodeProject und hier schon im Forum verlinkten Beitrag (C# Single Instance App With the Ability To Restore From System Tray (Using Mutex).
Dazu muss man in der Main() Methode
if (!SingleInstance.Start())
{
SingleInstance.ShowFirstInstance();
return;
}
einfügen.
Meine Idee war es die ProgramInfo Klasse zu erweitern. Allerdings sind die Argumente immer die gleichen und somit ist die Idee wertlos.
Ich denke das ich viel mehr über die überschriebene WndProc Methode und deren Message-Parameter gehen muss.
protected override void WndProc(ref Message m)
{
if (m.Msg == SingleInstance.WM_SHOWFIRSTINSTANCE)
{
WinApi.ShowToFront(this.Handle);
}
base.WndProc(ref m);
}
Nur konnte ich nichts finden, was eine Hinweis darauf gibt, in welcher Property die Parameter gespeichert werden.
Hat einer von euch einen Rat?
Das Thema gabs hier schon paar mal, schau hier:
[FAQ] mehrere Programminstanzen verhindern (inkl. Parameterübergabe)