Home » Delphi » Component, Delphi, Reader Request, Referensi, Sample Apps, Tips & Tricks, Win32 API » Contoh Program Delphi Menggunakan Global HotKey

Contoh Program Delphi Menggunakan Global HotKey

Print Friendly



Seringkali kita perlu menggunakan global hotkey pada aplikasi kita. Contoh, dengan menekan CTRL+SHIFT+F9, aplikasi akan diminimize ke system tray, sementara ALT+F11 menampilkannya kembali dari system tray.

Hotkey dapat dipasang pada TMenuItem atau TAction, sehingga menekan kombinasi hotkey ini sama dengan melakukan klik/eksekusi TAction yang terkait. Sayang hotkey seperti ini hanya berfungsi dalam aplikasi kita. Bila aplikasi kita sedang tidak fokus, katakan kita sedang bekerja di Microsoft Word, menekan tombol kombinasi hotkey ini tidak akan menghasilkan apa-apa bagi aplikasi kita.

Di sini bedanya hotkey biasa dengan global hotkey, di mana global hotkey tetap dapat dieksekusi bahkan jika bukan aplikasi kita yang sedang aktif. Cara membuatnya?

Pertama, kita perlu melakukan register global hotkey dengan fungsi WIN32 API RegisterHotKey(). Contohnya bila kita ingin meregister hotkey ALT+F11, kita dapat memanggil fungsi tersebut dengan parameter:


var ID: Cardinal;

//...............

ID := 9090;

RegisterHotKey(Form1.Handle, ID, <strong>MOD_ALT</strong>, <strong>VK_F11</strong>);

Parameter pertama adalah handle dari form yang akan menerima pesan dari Windows jika tombol kombinasi hotkey ini ditekan. Parameter kedua, yaitu ID, adalah identitas unik dari kombinasi hotkey yang didaftarkan. Parameter ID ini akan dilewatkan sebagai TMessage.wParam saat aplikasi/window menerima pesan dari Windows.

Parameter ketiga adalah modifier, yang terdiri dari MOD_ALT, MOD_CONTROL, MOD_SHIFT dan MOD_WIN, di mana MOD_WIN adalah tombol Windows di keyboard. Bila ingin menggabungkan beberapa modifier, silahkan buat kombinasi dengan operasi + (tambah) atau OR. Contohnya, untuk hotkey CTRL+ALT+F11, gunakan modifier kombinasi MOD_ALT OR MOD_CONTROL sebagai parameter ketiga.

Parameter terakhir adalah virtual key yang didaftarkan. Dalam contoh ALT+F11 di atas, virtual key-nya adalah F11.

Lanjut. Setelah diregister, jangan lupa untuk menghapusnya kembali saat aplikasi berhenti.


UnRegisterHotKey(Form1.Handle, ID);

Kedua parameter ini sama dengan dua parameter pertama pada fungsi RegisterHotKey di atas.

Sekarang hotkey sudah teregister sebagai global hotkey. Tinggal kita buatkan sebuah prosedur untuk menerima pesan dari Windows saat kombinasi hotkey ini ditekan:


procedure TForm1.OnHotKey(var MSG: TMsg; var Handled: Boolean);
begin
 if MSG.wParam = ID then
 begin
 Handled := True;
ShowMessage('TES.');
 exit;
 end;
end;

Nah, seperti saya katakan di atas, parameter pertama dari fungsi RegisterHotKey adalah Handle aplikasi/window yang memproses. Karena di RegisterHotKey yang disebut sebagai parameter pertama adalah Form1.Handle, maka di Form1-lah kita memproses message dari Windows. Lihat potongan kode procedure TForm1.OnHotKey(var MSG: TMsg; var Handled: Boolean); di atas.

Parameter kedua, yaitu ID akan dilewatkan di TMessage.wParam, sehingga untuk memeriksa apakah yang ditekan adalah tombol kombinasi hotkey yang kita daftarkan, cukup kita periksa TMessage.wParam apakah sama dengan ID yang kita daftarkan atau tidak. Lihat if MSG.wParam = ID then. Bila sama, parameter Handled diberi nilai True agar Windows tidak menjalankan prosedur default lagi. Setelahnya silahkan jalankan kode Anda, dalam contoh di atas adalah ShowMessage(‘TES.’);

Terakhir, kita daftarkan prosedur ini sebagai message handler di aplikasi kita:


procedure TFMain.FormCreate(Sender: TObject);
begin
 Application.OnMessage := OnHotKey;
end;

Sehingga saat form dibuat, message handler diganti dengan prosedur yang telah kita buat di atas.

Bosan membaca? Silahkan Download Source Code Contoh Program Delphi Menggunakan Global HotKey ini:

Download Source Code Contoh Program Delphi Menggunakan Global HotKey (0.0 B)

Contoh projek ini menggunakan global hotkey untuk menampilkan, menyembunyikan form dan menampilkan kotak about.

Semoga bermanfaat :) Jangan lupa share…


Incoming search terms:

 

Comments

comments

Powered by Facebook Comments

Leave a Reply

Your email address will not be published. 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=""> <strike> <strong>