2012-03-23 11 views
7

Estoy intentando implementar superposición de icono en archivos y carpetas como lo hace Tortoise SVN o Dropbox.Superposición de icono de archivo en java para Windows

Realicé muchas búsquedas en Internet, pero no puedo encontrar una solución en Java.

¿Alguien me puede ayudar con esto? enter image description here

+1

Buena pregunta, pero yo creo que no es posible hacer una cosa tal como los programas de Java se ejecutan en la máquina virtual Java, que los desacopla del sistema operativo en el que se ejecutan. No publicar como respuesta ya que no estoy seguro. –

+0

Probablemente necesitará usar JNI para saltar al código nativo para realizar el cambio (es decir, si es posible a través de algún WinAPI). – Java42

+0

@ W.Goeman sí, parece difícil o imposible en Java, pero creo que debería haber una manera fácil de hacerlo. No lo sé, pero tal vez haya una biblioteca para la superposición de iconos en java o etc. – baharcglr

Respuesta

4

Lamento confirmar sus temores, pero no se puede hacer en Java.

Dado que Windows Explorer es el que tiene el control, Icon Overlay es una especie de complemento. Tiene que implementarse como una DLL (no una JNI sino una verdadera DLL nativa) y registrada en el Registro de Windows. Como vio en el artículo CodeProject, su DLL tiene que implementar una interfaz específica - IShellIconOverlayIdentifier.

Tome por ejemplo el TortoiseSVN implementation.

DLL de TortoiseSVN se carga por el explorador y se une a su proceso:

DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /* lpReserved */) 
{ 
    ... 
    if (dwReason == DLL_PROCESS_ATTACH) 
    ... 

Con el fin de hacer esto en Java que se necesita para escribir un archivo DLL que se carga la JVM y el JAR que sería una excesivo

En cuanto a la superposición de icono de bandeja, su aplicación Java es la que tiene el control para que se pueda hacer.

Cuestiones relacionadas