Moin,
ich bin gerade dabei C# zu lernen und hänge an einem Problem wo ich nicht weiter komme.
Ist es Möglich das Fenster einer anderen Anwendung zu schließen? In meinem Fall geht es um die Software Touch von Roccat (für das Mic).
Diese startet immer mit Windows und sollte von meinem Tool automatisch geschlossen werden, allerdings bringt das beenden nichts, da die Software ja weiter laufen soll.
Viele Grüße Christian
Sarkasmus ist die Kunst, Menschen einen Spiegel vorzuhalten. Nur merken es viele nicht.
Du kannst ein Window-Handle suchen und dann mit der WinApi schließen.
Die Process-Klasse teilt dir meine ich den MainWindow-Handle mit. Alternativ bietet die WinApi natürlich auch passende Funktionen an.
Und zum Schließen gibt's in der WinApi die CloseWindow-Funktion.
Für einen Anfänger ist das aber vermutlich etwas to much 😉
Wenn das aber das Hauptfenster ist, dann wird damit auch die Anwendung geschlossen - außer es befindet sich auch noch als TrayIcon (unten rechts in der Windows Taskleiste).
Das weitere Stichwort bzgl. WinAPI -Benutzung von C# aus ist "p/Invoke" - und als Seite dazu: PInvoke.net.
Da er das Programm ja nicht schliessen will, ist doch hier eher ShowWindow gefragt??
Damit kann man das Fenster doch quasi "verstecken".
Zumindest hab ich das in meinen "Boss-Kommt-Rein"-Programm so 🙂
Guter Gedanke, zumindest erlaubt der zweite Parameter das Verstecken.
Müsste man aber mal testen, ob bereits sichtbare Fenster auf diese Weise versteckt werden können, hab ich bisher nie versucht.
Guter Gedanke, zumindest erlaubt der zweite Parameter das Verstecken.
Müsste man aber mal testen, ob bereits sichtbare Fenster auf diese Weise versteckt werden können, hab ich bisher nie versucht.
Ja geht,
hab ich ja wie gesagt in meinen kleinen Progrämmchen so... der versteckt mir sogar Diablo III beim "Arbeiten" 🙂
Moin zusammen,
ich habe es nun lösen können:
System.Diagnostics.Process[] Prozesse = System.Diagnostics.Process.GetProcesses();
foreach (System.Diagnostics.Process Prozess in Prozesse)
{
if (Prozess.MainWindowTitle != string.Empty)
{
if (Prozess.MainWindowTitle.ToString().ToLower().Contains("TITEL".ToLower())) {
MessageBox.Show(Prozess.MainWindowTitle.ToLower());
Prozess.CloseMainWindow();
}
}
}
Vielen Dank für die Tipps.
Ich hoffe es hilft noch einigen anderen...
Viele Grüße
Christian
Sarkasmus ist die Kunst, Menschen einen Spiegel vorzuhalten. Nur merken es viele nicht.
Ach stimmt, die Methode gibt's ja auch 😁
Aber der Hinweis von Th69 gilt weiterhin.
Ich dachte das wäre gemeint 😂
Sarkasmus ist die Kunst, Menschen einen Spiegel vorzuhalten. Nur merken es viele nicht.