WindowTitle auslesen, mit String vergleichen und bestimmte Stelle übergeben

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    WindowTitle auslesen, mit String vergleichen und bestimmte Stelle übergeben

    Hallo,

    ich stehe derzeit vor einem Problem.
    Für die Uni müssen wir ein Programm schreiben, welches den Taskmanager ausliest, also alle Anwendungen die laufen (!nicht Prozesse!).
    Diese sollen dann mit einem String verglichen werden und danach soll ein Status ausgegeben werden.

    Ich versuch das mal zu erklären:
    Es sind folgende Fenster geöffnet:

    Google Chrome
    Explorer
    Microsoft Access
    ...

    Das Programm soll jetzt in regelmäßigen abständen alle Fenster durchgehen, die Titel auslesen, dann soll der Anfang des ausgelesenen Titels mit angegebenen Strings verglichen werden. Bsp:

    Google Chr
    Explor
    Microsoft Acc

    Wenn der Ausgelesene Wert so beginnt, soll ein true abgespeichert werden, dass das Fenster läuft.

    Ich hoffe ich konnte das einigermaßen darstellen. DIe von mir genannten Namen sind auch nur Beispiele für das einfachere Verständnis.
    Das String vergleichen bekomm ich sicher allein hin, das ist nicht das Problem.
    Allerdings schaff ich es einfach nicht, alle WindowsTitle auszulesen (nicht nur das aktive) und diese dann in eine Arraylist zu speichern.

    Die Programmiersprache ist dabei freigestellt, Java würde also auch gehen, doch da das nur ein Teil des Programmes sein soll, und wir bereits mit VB angefangen haben, wäre es schön, wenn uns jemand mit einer VB Lösung behilflich sein könnte.

    Vielen Dank schonmal im Vorraus.

    gruß
    Kolli
    Willkommen im Forum. :thumbup:

    kolli88 schrieb:

    also alle Anwendungen die laufen (!nicht Prozesse!).
    Erkläre bitte den Unterschied zwischen Anwendung und Prozess.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ja hab ich getan.
    Der 2. beschreibt leider auch bisher nur das, was ich auch schon gefunden habe, und zwar wie man den Titel des MainWindows auslesen kann. Das bringt mir leider nicht so viel, da ich die Titel aller Windows benötige :/
    Was für "alle" Windows? Du brauchst doch Titel von allen Anwendungen. Alle Anwendungen bekommst du mit Process.GetProcess(), dann musst du das Array dann in einer Schleife durchgehen und MainWindowTitle von jedem auslesen und vergleichen.

    sonne75 schrieb:

    Was für "alle" Windows? Du brauchst doch Titel von allen Anwendungen. Alle Anwendungen bekommst du mit Process.GetProcess(), dann musst du das Array dann in einer Schleife durchgehen und MainWindowTitle von jedem auslesen und vergleichen.

    Ok, das könnte wirklich funktionieren. Das werde ich so mal probieren.

    Vielen Dank!

    kolli88 schrieb:

    aller Windows
    Na dann holen wir sie uns. Etwas musst Du schon selber tun. :D

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. For Each pr As Process In Process.GetProcesses
    3. If pr.MainWindowHandle <> Nothing Then
    4. ListBox1.Items.Add(pr.MainWindowTitle)
    5. End If
    6. Next
    7. End Sub

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke vielmals für die ganzen Hilfen. Das hat hat für fast alles funktioniert.
    Leider gibt es auch Anwendungen, die mehrere Fenster starten, aber nur einen Prozess haben. Das funktioniert mit der genannten Methode dann natürlich nicht. Fällt dafür evtl jemandem eine Lösung ein?

    Vielen Dank
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!