Kann ich mit C# den Fenstertitel von einem Prozess bekommen?

2 Antworten

Von Experte Palladin007 bestätigt

Man braucht keine user32 dll dafür, wie der eine Nutzer es gesagt hat ... Die Process Klasse kann das von selbst, warum alles neu erfinden?

Bild zum Beitrag

Im Bild zu sehen, dass die Liste windowTitles von allen notepad Programmen den Fenstertitel beinhaltet. In diesem Fall ist es nur ein Programm.

List<string> windowTitles = new List<string>();
List<Process> process = Process.GetProcessesByName("HierProzessNamenEintragen").ToList();
process.ForEach(p =>
{
    windowTitles.Add(p.MainWindowTitle);
});

Da javaw.exe denke ich mal die exe ist und nicht der Prozessname, solltest du nochmal herausfinden, wie der Prozessname tatsächlich heißt. Dies kannst du mit dem TaskManager tun. Im Normalfall ist dies aber der selbe Name der exe, nur halt ohne ".exe" (notepad.exe) => (notepad)

 - (Computer, Windows, programmieren)

GuteAntwort2021  28.05.2022, 15:53
Da javaw.exe denke ich mal die exe ist und nicht der Prozessname, solltest du nochmal herausfinden, wie der Prozessname tatsächlich heißt.

Doch, ist es. Wird die Java-Datei mit javaw.exe gestartet, ist das eben auch der Prozess für die Anwendung. Daher liefert dein Codesnippet

List<Process> process = Process.GetProcessesByName("javaw").ToList();
process.ForEach(p =>
{
  Console.WriteLine(p.MainWindowTitle);
});

alle Fenster-Titel, die mit javaw.exe gestartet wurden.

0
FaTech  28.05.2022, 16:07
@GuteAntwort2021

Du hast mich hier so korrigiert, wie ich es bereits gesagt habe. Das exe muss weg und der Prozess Name ist nur ohne exe. Deine Korrektur war unnötig

0
GuteAntwort2021  28.05.2022, 16:49
@FaTech

Du verstehst mich hier falsch. Das war nicht als Korrektur gedacht, deine Lösung funktioniert ja einwandfrei. :)

Ich bin lediglich auf den quotierten Absatz eingegangen. Der Prozessname ist wirklich einfach "javaw". Setzt du diesen ein, bekommst du alle Fenster-Titel die mit javaw.exe gestartet wurden.

Das heißt, alle entsprechenden Fenster haben als Prozess "javaw".

0
GuteAntwort2021  28.05.2022, 14:32
Man braucht keine user32 dll dafür, wie der eine Nutzer es gesagt hat ...

Ich habe nirgends gesagt, dass man es so machen muss. Ich habe es lediglich als eine potenzielle Lösung angeboten.

0
FaTech  28.05.2022, 16:09
@GuteAntwort2021

Habe ich nie behauptet. Ist natürlich eine Lösung. Das Problem: Sie geht nur auf Windows. Crossplatform bekommt man Probleme. Deshalb sollte man in erster Linie immer die Dinge empfehlen, die auch mitgeliefert werden. Falsch war deins dennoch nicht

0