Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Java Native Access - reduce speed mouse

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.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny