

Java Native Access - reduce speed mouse
Dobrý den,
Jak, prosím Vás, pomocí knihovny Java Native Access snížím rychlost myši.
Děkuji
Dobrý den,
Jak, prosím Vás, pomocí knihovny Java Native Access snížím rychlost myši.
Děkuji
Zpět do poradny Odpovědět na původní otázku Nahoru
Predne JNA neni knihovna, je to obecne rozhrani z Javy do nativniho kodu. Takze muzes treba volat funkce z WinAPI nebo z nejakych dll knihoven. Osobne jsem to pouzil jen jednou, ale ne na WinAPI - coz potrebujes ty. Zkus googlit.
PS: Nedelej to. Prijdes o multiplatformost aplikace. Pak se nabizi otazka proc to vubec psat v Jave, kdyz treba .NET bys tohle udelal daleko snaze.
Ano, máš pravdu, ztratím univerzálnost, ale kvůli jedné věci ji nebudu psát v jiném jazyku.
Každopádně, hledal jsem to a našel tyto dva odkazy.
jna-systemparametersinfo-to-set-mouse-speed-is-returning-false-not-changing
java-awt-robot-changes-windows-mouse-speed
Zkusil jsem to nějak sepsat, ale nefunguje to.
Prosím Vás o radu.
Děkuji
PS. Variable SPI_GETMOUSESPEED není vůbec použita a program chtěl po přidání rozhraní importovat miliardu abstractních method.
Už to funguje.
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,
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.
WinAPI zrejme konzumuje jen hexa promenne, vsak koukni do dokumentace. Ty SPIF_ jsou flagy. Dalsi nevyhodu vidim v tom, ze ta metoda stop() se ti zavola jen pri korektnim ukonceni. Pokud to nekdo killne nasilne, rychlost mysi se zpet nezmeni...
WinAPI konzumuje čísla. Či sú zapísané v desiatkovej alebo šestnástkovej sústave je jedno, pretože kompilátor z toho spraví rovnaké jednotky a nuly. Konvencia je používať šestnástkovú sústavu najmä kvôli čitateľnosti, keďže väčšinou sú tie čísla flagy.
Meniť rýchlosť myši z nejakej okienkovej aplikácie nie je ani zďaleka dobrý nápad. Dôvodov "prečo" je veľa, nekorektné ukončenie aplikácie je len jedným z mnohých. Odporúčam zamyslieť sa nad iným riešením, ale nesledoval som staršie príspevky, takže neviem, aký problém autor vlastne rieši.
Aha. WinAPI jde uplne mimo me.
Cele to zaclo tady:
https://pc.poradna.net/questions/2747610-javafx-temporary-freeze-of-the-mouse-cursor
Radu, at to nevola WinAPI z Javy uz dostal...
JÁ JSEM VŮL. ŘEŠÍM TADY RYCHLOST MYŠI A ŘEŠENÍ JE ÚPLNĚ PRIMITIVNÍ.
Abych začal od začátku, mám "tabulku" polygonů, "na něm" je další "tabulka" polygonů. Nejsou to přímo jeho potomci, ale jsou o vrstvu výše.
Respektive, mám polygon A, polygon B (čistě příklad)
Najedu na A, zobrazí se polygony na něm.
Přejedu na vedlejší polygon B, zobrazí se polygony na něm a zároveň polygony na A zmizí.
Přejedu zpátky na polygon A, zobrazí se polygony na něm a zároveň polygony na B zmizí.
Když jsem to dělal pomocí visible, fungovalo to bez problém. Pak jsem to ale předělal na FadeTransition, které postupně naskládám do ParallelTransition a pustím je.
Avšak po rychlém přejetí přes několik prvků animace nefungovala správně, některé prvky se nezobrazily a některé naopak zase nezmizely. Ovšem, když jsem přejížděl pomalu, pouze na sousední a potom, co současná animace proběhla, fungovalo to bez problému.
Problém byl v tom, že objekt ParallelTransition byl statický field třídy, který se vždy po najetí na nový polygon vymazal, což pravděpodobně působilo tyto problémy, když ještě předešlá animace neskončila.
Řešení bylo prosté, stačilo objekt předělat na dočasnou lokální proměnnou. Nastává však fakt, že když budu neustále vytvářet a mazat proměnnou, tak vzniká režie. Právě proto jsem to měl jako statický field.
Lze to nějak, prosím Vás, obejít. Respektive, nějaké optimálnější řešení.
Díky
Je to pomale? Pada to na OutOfMemmory? Jestli ne, tak to neres prosimte...
OK. Díky.