Anna hieman kontekstia tuosta ohjelmasta. Eli kyseessä on siis konsoliohjelma joka liikuttaa hiirtä x ja y tasoihin nähden haluttuun pisteeseen asti. Esim. haluan, että hiiri liikkuu 200 pikseliä positiiviseen suuntaan molemmissa tasoissa jolloin koodi näyttää tältä:
Koodi:
mouse_event(MOUSEEVENTF_MOVE, (DWORD)200, (DWORD)200, NULL, NULL).
En kuitenkaan halua, että liike on suoraan 200 pikseliä, koska tuolloin liike olisi todella nopeaa. Haluan siis, että liike on hitaampaa, jolloin teen liikkeen esim. kymmenessä eri mouse_event call:issa:
Koodi:
mouse_event(MOUSEEVENTF_MOVE, (DWORD)20, (DWORD)20, NULL, NULL)
Oma funktioni osaa siis laskea halutun pisteen ja hiiren tämän hetkisen pisteen eron, joten kyseinen funktio toistuu niin monta kertaa kunnes haluttuun pisteeseen on päädytty. Voin itse muuttaa tuon "smoothing" factorin lineaarisesta funktiosta esim. exponentiaaliseen- tai logaritmiseen funktioon, jolloin mouse_event call:eja tulee vielä enemmän.
Tein väliaikaisena ratkaisuna sen, että laitoin tuon funktion loppuun sortaus algoritmin, joka sorttaa vectorin kaikki numerot järjestykseen. Tuolla tavalla consolini ei täyty turhasta tekstistä ja itse mouse_event ei aiheuta pätkivää liikettä. Tietenkin tuo on ongelman kiertämistä eikä sen korjaamista, mutta en tällä hetkellä keksi muuta tapaa korjata tuota ongelmaa.