Fenstertitel ist String.Empty - Was jetzt?

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 33 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    Fenstertitel ist String.Empty - Was jetzt?

    Moin! :)
    Ich habe einen Code um Prozesse und Fenstertitel auszulesen.
    Jetzt habe ich festgestellt, dass manche Prozesse keinen WindowsTitel haben, wie z.B TheBat.
    Dieses Problem habe ich bei verschiedenen Programme.
    Gibt es eine Möglichkeit, auch dieser Fenstertitel auszulesen.
    Vielleicht mit einer WIN-API oder WMI?
    Freue mich falls mir jemand dabei helfen kann.
    Oder muss man mit diesem Problem leben?
    (Falls es doch keine Lösung geben sollte!)
    BIG THX

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. For Each proc As Process In Process.GetProcesses
    3. Try
    4. If proc.MainWindowTitle <> "" Then
    5. ListBox1.Items.Add(proc.ProcessName & " (" & proc.MainWindowTitle & ")")
    6. End If
    7. Catch
    8. End Try
    9. Next
    10. End Sub






    Link:
    docs.microsoft.com/de-de/dotne…nwindowtitle?view=net-5.0
    Visual Basic.NET 8o
    MS-SQL
    8o
    @Cheffboss Wenn .MainWindoeHandle Null ist, kannst Du keinen Fenstertitel auslesen, denn der nackte Mann hat kein Hemd an, und kein Hemd hat noch keinere Taschinnen und Taschen.
    ( :thumbsup: )
    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!
    Oder vielleicht noch anders ausgedrückt: Der Prozess, den Du da am Haken hast, hat wohl einfach kein MainWindow. Klar, das Programm "The Bat" hat bestimmt eines. Aber sagt ja niemand, dass das Programm nur einen Prozess startet. Vielleicht generiert diese thebat.exe auch nur andere Prozesse. Oder oder oder.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @RodFromGermany
    Danke, für deine Blitz Antwort. :)
    Heißt es das es dann gar nicht möglich ist, und ich jetzt nicht Stunden lang nach einer Win-API oder ein WMI Code suchen muss?
    Falls es wirklich keine Lösung gibt, wäre es schade.
    Aber wie viele Programme haben kein MainWindowsTitle?
    Wenn es nur 1% ist, kann man noch damit leben.
    Ich programmiere ein Programm um Prozesse zu beenden.
    Bin ich dann verpflichtet in der ReadMe.txt Datei zu erwähnen, dass leider nicht alle Prozesse gefunden werden können.
    Und falls „Ja“, wie formuliert man diesen Text am besten? ?(

    Leider ist es technisch nicht möglich, von jedem Programm den Fenstertitel auszulesen.
    Da dieser nicht eingespeichert ist und deshalb nicht gefunden werden kann.
    Dies gilt zum Glück nur für sehr weinige Programme.
    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    Ich programmiere ein Programm um Prozesse zu beenden.
    Ok. Und wozu dann den MainWindowTitle - außer zur Auflistung? Notfalls kannst Du doch auch, wenn es keinen Titel gibt, den ProcessName als Alternative auflisten. Und Prozessbeendigung geht ja auch ohne MainWindow.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed
    Ich möchte das man den Prozess und das passende Fenster sieht.
    Es geht nur um Prozesse diese auch in der Taskleiste als Fenster aufgelistet werden.
    Und TheBat ist gestartet, aber wird nicht aufgelistet...

    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    Da dieser nicht eingespeichert ist und deshalb nicht gefunden werden kann.
    => Da dieser nicht vorhanden ist ...
    Nimm doch den Screenshot von oben und kringle MainWindowHandle und MainWindowTitle ein, das sollte jeder verstehen.
    ====
    Was ist der Zweck des Tools?
    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!
    @RodFromGermany
    Ich habe nochmals ein Screenshort hochladen, in dieser man die Werte von MainWindowHandle und MainWindowTitle genau sehen kann.
    Falls es keine Lösung geben sollte.
    Werde ich dann diesen Text dem Benutzer mitteilen: :!:
    Leider ist es technisch nicht möglich, von jedem Programm den Fenstertitel auszulesen.
    Da dieser nicht vorhanden ist, dies gilt zum Glück nur für sehr wenige Programme.


    Ich habe auch mal nach VB6 und WinAPI gesucht, leider keine sinnvollen Seiten gefunden.
    Damals unter VB6 könnte man bestimmt, Fenstertitel auslesen.
    Ich hoffe sehr dass es eine Lösung gibt, habe schon Stunden nach einer Lösung gesucht!

    Was ist der Zweck des Tools?
    Ich möchte das man alle Prozesse und Fenstertitel sehen kann.
    Und wenn es nun zu viele Prozesse aktiv sind kann der Benutzer diesen dann einfach beenden.
    (Auftragsprogrammierung deshalb darf ich keine weiteren Infos bekannt geben….)

    Kann vielleicht der Wert aus MainWindowHandle das Problem lösen? ?(

    Visual Basic.NET 8o
    MS-SQL
    8o
    @Cheffboss Was kann Dein Programm, was der TaskManager nicht kann?
    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!
    @Cheffboss Dazu verwende ich ein Aufräum-Tool: AVG TuneUp.
    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!
    @Cheffboss: Öhm. Wie läuft bei Dir das Programm? Wenn es natürlich minimiert läuft, wird auch nix gefunden. Aber sonst klappt es.
    Bilder
    • the bad bat.png

      39,38 kB, 730×394, 125 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed
    Komisch, ich werde mir es spätestens am Montag in Ruhe anschauen.
    Vieleicht sogar morgen.
    Meine einzige Erklärung wäre, dass mein TheBat noch eine alte Version ist.
    Da die neuste ein Upgrade kostet, bin ich noch mit der älteren Version in Verbindung.
    Danke, fürs testen! :thumbup:
    Visual Basic.NET 8o
    MS-SQL
    8o
    @VaporiZed
    Leider geht es auch nicht.

    @an alle
    Ich habe es nochmals ausprobiert, mit einer neuen und alten Version.
    Bei der alten Version wird „TheBat“ gar nicht aufgelistet…
    Bei der neuen Version wird es nur aufgelistet wenn das Fenster den Focus hat.
    Alle anderen Programme sind minimiert und werden auch angezeigt, zum Beispiel winamp.

    Nun meine Frage an euch.
    Wie würdet Ihr weiter machen…
    1. Das Problem betrifft nicht viele Anwender, da die meisten Programme ein Titel haben.
    Das ich einfach, dies in der ReadMe.txt den Benutzern mitteile.

    2. Versuchen ob unter VB6 mit WinAPI oder WMI, dies möglich ist.
    Denn damals unter Windows 98/ME ging es doch auch irgendwie!

    Danke, für eure Beratung! :!:
    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    Bei der neuen Version wird es nur aufgelistet wenn das Fenster den Focus hat.
    Nö. Mein Testprogramm hatte den Fokus, als ich den Screenshot in Post#12 gemacht habe.

    Die Frage ist doch, ob der User weiß, was Dein Programm überhaupt macht. Wenn Du ihm schon beim Download/Installieren sagst, was Dein Programm (nicht) kann, dann brauchst Du keine ReadMe, die ich eh grundsätzlich ignoriere, trotz RTFM.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Cheffboss schrieb:

    Taskmanger
    Unter welcher Rubrik dort steht denn das Programm?
    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!
    Dienste haben kein MainWindow
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.