Simulasi Gerakan Mouse

Akhir-akhir ini saya suka bermain game Dragons of Altantis di Facebook. Awalnya hanya iseng, tetapi lama-kelamaan menjadi senang. Akan tetapi ada hal yang menyebalkan dari game ini, yaitu bahwa kita harus membuang waktu yang lama hanya untuk bermain game ini.

Kita hanya bisa melakukan sebuah pekerjaan dalam sekali waktu. Dan pekerjaan itu terkadang memakan waktu yang begitu lama sampai berjam-jam. Sayangnya, jika kita meninggalkan komputer terlalu lama, maka game ini akan meminta perhatian dari kita. Jadi, game ini benar-benar game yang dirancang untuk membuang waktu kita dengan sia-sia.

Sebagai seorang programmer, saya berpikir mungkin ada cara untuk membohongi game ini, sehingga game ini mengira bahwa kita masih memainkan game ini, tetapi sebenarnya program yang kita jalankan yang memainkannya. Sedangkan kita sebenarnya pergi meninggalkan komputer untuk melakukan hal lain.

Gagasan yang pertama muncul adalah membuat program yang akan menggerakkan pointer mouse. Saya merencanakan untuk membuat software yang menggerakkan mouse dengan berputar. Pertama bergerak ke kanan, kemudian turun, kemudian ke kiri, dan terakhir naik lagi menuju posisi awal. Dengan demikian, pointer mouse akan terus bergerak tanpa akhir sampai kita menghentikan aksi dari software ini.

Untuk bisa menggerakkan mouse, pertama kita harus mengetahui posisi pointer mouse. Fungsi untuk mengetahui posisi pointer mouse adalah

GetCursorPos(pt);

pt adalah variabel bertipe TPoint.

Setelah kita mendapat posisi pointer, maka kita bisa menggerakkan pointer dengan cara sebagai berikut:

  • Untuk menggerakkan ke kanan, maka kita tambah nilai X
  • Untuk menggerakkan ke bawah, maka kita tambah nilai Y
  • Untuk menggerakkan ke kiri, maka kita kurangi nilai X
  • Untuk menggerakkan ke atas, maka kita kurangi nilai Y

Langkah terakhir adalah menempatkan posisi pointer pada posisi yang telah kita modifikasi dengan cara di atas. Fungsi untuk menempatkan posisi pointer mouse adalah

SetCursorPos(pt.x,pt.y);

Agar pointer mouse bergerak sesuai dengan rencana di atas, maka saya membuat sebuah variabel yang saya gunakan untuk menentukan kemana arah gerakan mouse. Variabel tersebut saya beri nama PosX. Kemudian saya juga harus menentukan seberapa besar pergerakan tersebut. Untuk menyederhanakan rancangan, saya menentukan bahwa gerakan vertikal maupun horisontal ukurannya sama. Ukuran ini saya tentukan dengan variabel bernama SQSize.

Dari dua variabel tersebut, kita bisa menentukan kemana arah gerakan dengan membagi PosX dengan SQSize. Jika hasilnya 0, maka gerakan yang dilakukan adalah ke kanan, jika 1 ke bawah, jika 2, ke kiri, jika 3 ke atas, dan jika 4, maka hal ini menunjukkan bahwa satu periode gerakan terlah terlampaui. Oleh karena itu, jika hasilnya 4, selain kita menggerakkan pointer mouse ke kanan, kita juga mengembalikan nilai PosX ke posisi awal lagi.

Keseluruhan proses di atas bisa kita laksanakan dengan sebuah prosedur seperti berikut:

procedure MoveMousePointer;
var pt:TPoint;
begin
  GetCursorPos(pt);
  case(PosX div SQSize)of
    0:begin
        inc(pt.x);
        inc(PosX)
      end;
    1:begin
        inc(pt.y);
        inc(PosX)
      end;
    2:begin
        dec(pt.x);
        inc(PosX)
      end;
    3:begin
        dec(pt.y);
        inc(PosX)
      end;
    4:begin
        inc(pt.x);
        PosX:=1;
      end;
  end;
  SetCursorPos(pt.x,pt.y);
end;

Prosedur MoveMousePointer ini kemudian dipanggil setiap interval tertentu menggunakan timer.

Cara ini tentu saja bukan satu-satunya trik. Akan tetapi setidaknya kita bisa menggunakan masalah yang kita hadapi sebagai media untuk belajar.

Jika Anda hanya ingin menggunakan software ini, Anda bisa mendownload software yang saya namai MoveMouse.exe yang saya kompilasi menggunakan Lazarus. Sedangkan jika Anda juga tertarik untuk mempelajari bagaimana software ini dibentuk, Anda bisa mendownload source yang bisa Anda kompilasi menggunakan Delphi maupun Lazarus.

Saya menyukai software dengan ukuran yang kecil. Oleh karena itu, software ini saya bentuk tanpa menggunakan VCL (Delphi) atau LCL (Lazarus), melainkan saya susun menggunakan Windows API.

MoveMouse.exe Source

Comments |3|

Time limit is exhausted. Please reload the CAPTCHA.

Notify me of followup comments via e-mail. You can also subscribe without commenting.

Legend *) Required fields are marked
**) You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>