# Java & Windows-7-Taskbar



## JBenutzername (29. Nov 2009)

Hallo zusammen,

hat schonmal jemand versucht die neuen Funktionen der Windows-7-Taskbar (Windows 7 Taskbar Dynamic Overlay Icons and Progress Bars - Windows 7 for Developers - The Windows Blog) mit Java zu nutzen?

Ich habe das bislang mit JNA und libseven (psymp3 - Project Hosting on Google Code) versucht, aber hatte bislang keinen Erfolg. Da ich jetzt auch nicht der große Experte in Windows-Programmierung bin, frage ich mich, ob das überhaupt halbwegs vernüftig möglich ist.

Danke im voraus.


----------



## oversoul (30. Nov 2009)

Ich denke mal du brauchst eine .net->Java Brücke, da die neuen Funktionen der Taskbar alle nur mittels NetFramework aufrufbar sind.

Ob es eine solche "Brücke" gibt weiß ich nicht, ich weiß aber das man die Taskbar über C# manipulieren kann, da ich dieses Paralell zu Java lerne ^^


----------



## JBenutzername (30. Nov 2009)

Die neuen Funktionen sind definitiv nicht nur über .NET ansprechbar.

SetProgressState Method (ITaskbarList3)


----------



## oversoul (30. Nov 2009)

Hmm ich denke mal dass es möglich ist erstmal eine C#.dll zu schreiben und dann über JNI eine dll zu erstellen, die dann auf diese zugreift


----------



## Noctarius (30. Nov 2009)

Wieso nicht gleich eine Native DLL für JNI?


----------



## oversoul (1. Dez 2009)

Stimmt eigentlich auch, man könnte über eine C++/CLI dll bestimmt ebenfalls auf die Taskbar zugreifen.


----------



## Gast2 (1. Dez 2009)

oversoul hat gesagt.:


> Stimmt eigentlich auch, man könnte über eine C++/CLI dll bestimmt ebenfalls auf die Taskbar zugreifen.



klar wird aber unsinniger Spagat


```
Java -> JNI -> C++/DLL -> Com-Wrappe(für .NET) -> .NET-Dll -> Windows-API
```

wozu?


----------



## Noctarius (1. Dez 2009)

Sag ich ja:

[c]Java -> JNI -> C++ -> Windows API[/c]


----------



## JBenutzername (1. Dez 2009)

Also ich habe das mit JNA und dieser libseven-Bibliothek versucht.


```
...

    private static Libseven libseven;

    static {
        try {
            Native.setProtected(true);
            libseven = (Libseven) Native.loadLibrary("libseven", Libseven.class);
        } catch (UnsatisfiedLinkError e) {
            e.printStackTrace(System.out);
        }
    }

    public interface Libseven extends Library {

        public void InitializeTaskbar();

        public void AssociateHwnd(Pointer win);

        public void SetProgressType(int type);

        public void UpdateProgressBar(int current, int maximum);

    }

    public static void initializeTaskbar() {
        if (libseven != null) {
            libseven.InitializeTaskbar();
        }
    }

    public static void associateHwnd(Component c) {
        if (libseven != null) {
            libseven.AssociateHwnd(Native.getComponentPointer(c));
        }
    }
    
    public static void setProgressType(int type) {
        if (libseven != null) {
            libseven.SetProgressType(type);
        }
    }

    public static void updateProgressBar(int current, int maximum) {
        if (libseven != null) {
            libseven.UpdateProgressBar(current, maximum);
        }
    }

...
```

Leider funktioniert das nicht. Beim Aufruf der Methoden passiert einfach nichts, obwohl da JNA-Mapping korrekt ist (sonst würde es von JNA Exceptions geben).


----------



## segin (12. Jan 2010)

JBenutzername hat gesagt.:


> Also ich habe das mit JNA und dieser libseven-Bibliothek versucht.
> 
> 
> ```
> ...



Hello, I don't speak German, but I am the author of PsyMP3 and libseven, and believe I may be able to assist you with using my library. If additional modifications are required to use the library with Java, I may be able to make them. I would need a sample Java application to test the library with.

As for those that ask:


```
Java -> JNI -> C -> Windows API
```

I do not know if I will return to this forum, but I set the system to email me when someone replies. If you want to email me directly, look at my contact information on the main PsyMP3 project site


----------



## oversoul (13. Jan 2010)

Ich habe damit angefangen eine dll für Java zu schreiben, welche die API (also die WIN32) direkt anspricht, bisher ist es möglich den ProgressState zu setzten und den ProgressValue zusetzten.

Wenn ich fertig bin und mit meiner dll zufriden bin werde ich diese hier anbieten.


----------



## segin (13. Jan 2010)

oversoul hat gesagt.:


> Ich habe damit angefangen eine dll für Java zu schreiben, welche die API (also die WIN32) direkt anspricht, bisher ist es möglich den ProgressState zu setzten und den ProgressValue zusetzten.
> 
> Wenn ich fertig bin und mit meiner dll zufriden bin werde ich diese hier anbieten.



Ich bin für grammatische Fehler im folgenden Text leid. Diese ganze Nachricht wurde mit Google Translate übersetzt.

Ich glaube nicht, dass Sie wirklich brauchen, das zu tun, ich denke, dass JNA verwendet werden können, um mit libseven Schnittstelle, aber wie ich schon sagte, würde ich jemanden brauchen, der ein Testen von Java app Nutzung JNA schreiben.

Die grundlegende Art und Weise zu verwenden libseven ist etwa so:

Ordnen Sie ein Fenster, und nutzen Sie es native hWnd (Verwendung JNA um native Win32-Aufrufe machen, wenn nötig)
Call InitializeTaskbar () zu initialisieren libseven.
Call AssociateHwnd () mit der hWnd des Fensters, das Sie zuordnen möchten.
Call SetProgressType () zu einem der TASKBAR_PROGRESS, TASKBAR_PAUSED, TASKBAR_NORMAL oder TASKBAR_INDETERMINATE. Sehen Sie sich die enum in libseven.h für weitere Details.
Call UpdateProgressBar () gesetzt, um die Fortschritte Indikator ist und Maximalwerte.


----------



## haimat (11. Aug 2010)

Hallo zusammen, 

gibt es eigentlich schon einen geeigneten Weg, um diese neuen Windows 7 taskbar Eigenschaften unter Java zu nutzen?

Danke und vg, Matthias


----------



## Wildcard (12. Aug 2010)

Das einzige mir bekannte Java Programm dass das unterstützt ist Eclipse, ich würde also mal dort schauen. Ist vermutlich in SWT integriert.


----------

