Progressbar in Taskleiste

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Profi123.

    Progressbar in Taskleiste

    Hallo, ich hab ein kleines Programm programmiert, welches mir einfach nur die Auslastung meiner zwei Prozessorkerne und des Arbeitsspeichers mithilfe von ProgressBars anzeigt. Außerdem wird mir auch die Auslastung der beiden Prozessorkerne zusammen angzeigt. Nun habe ich mir gedacht, dass es ganz "witzig" wäre, wenn der Status der Progressbar4 (gesamte Prozessorauslastung) unten in der Taskleiste angezeigt werden würde.
    Hab also das WindowsAPICodePack gedownloaded und WindowsAPICodePack.Shell.dll und WindowsAPICodePack.dll importiert. Anschließend hab ich ins Form_Load Ereignis folgenden Code gepackt:

    VB.NET-Quellcode

    1. If TaskbarManager.IsPlatformSupported = True Then
    2. Dim TBM As TaskbarManager = TaskbarManager.Instance
    3. TBM.SetProgressValue(ProgressBar4.Value, ProgressBar4.Maximum)
    4. End If


    Wenn ich das Programm allerdings ausführen will, bekomme ich einen Fehler. "Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in Microsoft.WindowsAPICodePack.Shell.dll aufgetreten.
    Zusätzliche Informationen: A valid active Window is needed to update the Taskbar."

    Unter der Meldung verstehe ich, dass die Form nicht erstellt werden konnte. Allerdings hab ich keine Ahnung, warum. Kann mir wer helfen? Kann man eine sich ständig aktualisierende Progressbar überhaupt in der Taskleiste anzeigen lassen?
    Verschiebe das mal ins Form-Shown-Event, denn während des Form-Load Events ist die GUI ja noch inaktiv, also auch noch nicht in der Taskleiste, was beim FormShown Event aber das Gegenteil ist.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

    Knato schrieb:

    Zusätzliche Informationen: A valid active Window is needed to update the Taskbar."
    Während die Form lädt, ist diese natürlich noch nicht erstellt. Deshalb wird hier gemeckert. Lösung: Code erst NACH dem Ladevorgang ausführen.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Jetzt wird das Programm zwar gestartet, aber in der Taskleiste tut sich nichts.
    Wenn ich aber beispielsweise den Code in das ProgressBar4_Click Ereignis schreibe und dann uf die Progressbar klicke, aktualisiert sich bei jedem klick auch die Progress-Anzeige in der Taskleiste. Muss der Code also in eine Ereignis rein, das den Code immer dann ausführt, wenn sich die ProgressBar aktualisiert?
    Nimm das ProgressChanged Event der ProgressBar, aber nicht über Handles sondern mit AddHandler im FormShown Event :)
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    mach das Doch Direkt per TaskBarManager und Deklarier nicht einen!

    VB.NET-Quellcode

    1. If TaskBarManager.PlatformSupported Then
    2. TaskBarManager.Instance.SetStyle (derstyle)
    3. TaskBarManager.Instance.SetValue (Progressbar4.Value) 'Wenn der Style nicht Increment ist
    4. End If

    Ich Rate dir auch noch, das in einen Timer zu setzen.

    Profi123 schrieb:

    mach das Doch Direkt per TaskBarManager und Deklarier nicht einen!

    VB.NET-Quellcode

    1. If TaskBarManager.PlatformSupported Then
    2. TaskBarManager.Instance.SetStyle (derstyle)
    3. TaskBarManager.Instance.SetValue (Progressbar4.Value) 'Wenn der Style nicht Increment ist
    4. End If

    Ich Rate dir auch noch, das in einen Timer zu setzen.


    Dein Code gibt ´nen Fehler.