es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ubicación de ShObjIdl para uso de JNA

Estoy tratando de usar la biblioteca shobjidl_core.h para ejecutar código que cambia el fondo de pantalla de un monitor específico, específicamente necesito ejecutar estas dos funciones: GetMonitorDevicePathAt, SetWallpaper.

Ahora, cuando ejecuto el siguiente código:

    interface shobjidl_core extends Library {
        test.shobjidl_core INSTANCE = Native.load( "shobjidl_core", shobjidl_core.class);

        void GetMonitorDevicePathAt(int monitorIndex, WString m);
        void SetWallpaper(WString monitorId, WString wallpaperPath);
    }

Obtengo un error que dice “No se puede cargar la biblioteca ‘shobjidl'”.

He probado varias variaciones de “shobjidl”, pero todavía no puedo encontrar una que funcione. Según lo que entendí sobre JNA, necesita un archivo DLL que contenga la biblioteca, pero no puedo encontrar ningún DLL relacionado con shobjidl.

¿Qué debo hacer para cargar shobjidl?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para cargar la biblioteca shobjidl_core en Java utilizando JNA, necesitas tener el archivo DLL correspondiente para la biblioteca. En este caso, parece que estás teniendo problemas para encontrar el DLL de shobjidl_core.

    Una posible solución es buscar el DLL en tu sistema y especificar manualmente su ruta al cargar la biblioteca utilizando JNA. Por ejemplo:

    interface shobjidl_core extends Library {
        shobjidl_core INSTANCE = Native.load("C:\\Ruta\\Al\\shobjidl.dll", shobjidl_core.class);
    
        void GetMonitorDevicePathAt(int monitorIndex, WString m);
        void SetWallpaper(WString monitorId, WString wallpaperPath);
    }
    

    Reemplaza “C:\Ruta\Al\shobjidl.dll” con la ruta real al DLL en tu sistema.

    Si aún no puedes encontrar el DLL, es posible que necesites descargar e instalar el Windows SDK o Windows Driver Kit para tener acceso a él. Una vez instalado, el DLL debería estar ubicado en el directorio de instalación del SDK o WDK.

    Alternativamente, podrías intentar usar una biblioteca diferente que proporcione funcionalidad similar para gestionar fondos de pantalla en Windows, como JNA Wallpaper.

Comments are closed.