Už to funguje.
interface User32 extends com.sun.jna.platform.win32.User32 {
User32 INSTANCE = (User32) Native.loadLibrary(User32.class, W32APIOptions.DEFAULT_OPTIONS);
boolean SystemParametersInfo(
int uiAction,
int uiParam,
Pointer pvParam,
int fWinIni
);
}
public class Options extends javafx.application.Application implements User32 {
private static final int SPI_SETMOUSESPEED = 0x0071;
private static final int SPIF_UPDATEINIFILE = 0x01;
private static final int SPIF_SENDCHANGE = 0x02;
private static final int SPIF_SENDWININICHANGE = 0x02;
@Override
public void start(javafx.stage.Stage stage) {
// kód
}
public static void main(String[] args) {
User32.INSTANCE.SystemParametersInfo(SPI_SETMOUSESPEED, 0,
Pointer.createConstant(2),
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE | SPIF_SENDWININICHANGE);
launch(args);
}
}
Je tam však jeden malý zádrhel. Jelikož to mění přímo ve WIN, tak to zůstane i po skončení aplikace. Samozřejmě to lze změnit zpět pomocí metody,
@Override
public void stop() throws Exception {
User32.INSTANCE.SystemParametersInfo(SPI_SETMOUSESPEED, 0,
Pointer.createConstant(2),
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE | SPIF_SENDWININICHANGE);
}
která se vždy zavolá po skončení aplikace. Ovšem netuším, co tam mám nastavit za hodnoty. A s tím taky souvisí to, jestli je nutné to uvádět v jiné, než desítkové soustavě?
Prosím Vás o radu.
Díky.