Un semplice esempio forse ti può aiutare. Tra le API Win32 esiste una funzione GetDoubleClickTime() (la documentazione è qui) che fornisce il tempo di doppio click con il mouse (quello che si può configurare da Pannello di controllo -> Mouse).Originariamente inviato da Gipple
Grazie mille per il link, ci ho dato un occhiata e continuerò a farlo anche oggi in maniera più approfondita... spero di riuscire a saltarci fuori :/
La libreria User32 di Windows è "descritta" definendo una interfaccia che estende StdCallLibrary (perché le API Win32 usano la convenzione di passaggio dei parametri "stdcall") e la libreria viene caricata con quella loadLibrary(). Quel INSTANCE è una "costante".codice:import com.sun.jna.*; import com.sun.jna.win32.*; public class Prova { public static void main(String[] args) { int time = MyUser32Lib.INSTANCE.GetDoubleClickTime(); System.out.println("Tempo doppio click = " + time + " millisecondi"); } } interface MyUser32Lib extends StdCallLibrary { MyUser32Lib INSTANCE = (MyUser32Lib) Native.loadLibrary("user32", MyUser32Lib.class); int GetDoubleClickTime(); }
Poi nella interfaccia è definito il metodo che corrisponde come nome alla funzione nativa. Il metodo nativo restituisce un UINT. In Java non ci sono tipi unsigned (a parte il char) e comunque il valore fornito da GetDoubleClickTime è sicuramente limitato, quindi non ci sarebbero problemi con il segno e il valore di ritorno in Java va bene come 'int'.
Il resto mi pare ovvio.

Rispondi quotando