Projet gus05 de développement Java
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Trouver le chemin d'accès du wallpaper avec JNA

Aller en bas

Trouver le chemin d'accès du wallpaper avec JNA Empty Trouver le chemin d'accès du wallpaper avec JNA

Message  Gus Mer 19 Déc - 16:37

L'API Java Native Access (JNA) permet de trouver le chemin d'accès vers le fichier image utilisé pour le fond d'écran de votre Windows.
Voici le code source correspondant :

Code:
    private String find()
    {
       Pointer ptr = new Memory(Pointer.SIZE * User32_get.MAX_LENGTH);
      
       User32_get.INSTANCE.SystemParametersInfo(
            new UINT_PTR(User32_get.SPI_GETDESKWALLPAPER),
            new UINT_PTR(User32_get.MAX_LENGTH),
            ptr,
            new UINT_PTR(0));
      
      String s = new String(ptr.getCharArray(0,User32_get.MAX_LENGTH));
      return truncate(s);
    }
   
    private String truncate(String s)
   {
      for(int i=0;i<s.length();i++)
      if(s.codePointAt(i)==0) return s.substring(0,i);
      return s;
   }
   
    public interface User32_get extends StdCallLibrary
   {
      long SPI_GETDESKWALLPAPER = 0x73;
      int MAX_LENGTH = 256;
      
      User32_get INSTANCE = (User32_get) Native.loadLibrary("user32", User32_get.class, new HashMap<Object, Object>() {
         {
            put(OPTION_TYPE_MAPPER, W32APITypeMapper.UNICODE);
            put(OPTION_FUNCTION_MAPPER, W32APIFunctionMapper.UNICODE);
         }
      });
      boolean SystemParametersInfo(UINT_PTR uiAction,UINT_PTR uiParam,Pointer pvParam,UINT_PTR fWinIni);
   }
La manière dont je récupère la chaine de caractère à partir de l'objet Pointer n'est sans doute pas optimale mais ça fonctionne.
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

http://www.gus05.com

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum