Frage

Ich habe mehrere Instanzen derselben Anwendung ausgeführt. Der Benutzer fragen kann „Quit“ auf jede Instanz klicken, es herunterzufahren.

Ich möchte die Wahl hinzuzufügen auf „Alle Instanzen Quit“, die irgendein Kind von „Ereignis“ wird angehoben, die alle Instanzen der Anwendung benachrichtigt, dass sie schließen sollte. Ich brauche nicht zusammen mit dieser Veranstaltung alle Daten zu transportieren.

Was ist der beste (und vorzugsweise einfachste) Weg, dies in Windows mit C # zu tun /. NET?

War es hilfreich?

Lösung

Senden Sie die good'ol WM_CLOSE auf alle Fälle ...

Process[] processes = Process.GetProcesses();
string thisProcess = Process.GetCurrentProcess().MainModule.FileName;
string thisProcessName = Process.GetCurrentProcess().ProcessName;
foreach (Process process in processes)
{
   // Compare process name, this will weed out most processes
   if (thisProcessName.CompareTo(process.ProcessName) != 0) continue;
   // Check the file name of the processes main module
   if (thisProcess.CompareTo(process.MainModule.FileName) != 0) continue;
   if (Process.GetCurrentProcess().Id == process.Id) 
   {
     // We don't want to commit suicide
     continue;
   }
   // Tell the other instance to die
   Win32.SendMessage(process.MainWindowHandle, Win32.WM_CLOSE, 0, 0);
}

Andere Tipps

Die System.Diagnostics.Process Klasse verfügt über mehrere Methoden, die Sie verwenden können.

Process.GetProcessesByName lassen Sie alle Instanzen aufzählen:

http://msdn.microsoft.com /en-us/library/system.diagnostics.process.getprocessesbyname.aspx

dann Process.CloseMainWindow oder Process.Close schaltet sie nach unten:

http://msdn.microsoft.com /en-us/library/system.diagnostics.process.closemainwindow.aspx http://msdn.microsoft.com/en- us / library / system.diagnostics.process.close.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top