Kustomisasi Keyboard dan Mouse

MFC memungkinkan pengguna aplikasi Anda untuk menyesuaikan caranya menangani input keyboard dan mouse. Pengguna dapat menyesuaikan input keyboard dengan menetapkan pintasan keyboard ke perintah. Pengguna juga dapat menyesuaikan input mouse dengan memilih perintah yang harus dijalankan ketika pengguna mengklik dua kali di dalam jendela aplikasi tertentu. Topik ini menjelaskan cara menyesuaikan input untuk aplikasi Anda.

Dalam kotak dialog Kustomisasi , pengguna dapat mengubah kontrol kustom untuk mouse dan keyboard. Untuk menampilkan kotak dialog ini, pengguna menunjuk ke Kustomisasi pada menu Tampilan lalu mengklik Bilah Alat dan Docking. Dalam kotak dialog, pengguna mengklik tab Keyboard atau tab Mouse .

Kustomisasi Keyboard

Ilustrasi berikut ini memperlihatkan tab Keyboard dari kotak dialog Kustomisasi .

Keyboard tab in the Customize dialog box.
Tab Kustomisasi Keyboard

Pengguna berinteraksi dengan tab keyboard untuk menetapkan satu atau beberapa pintasan keyboard ke perintah. Perintah yang tersedia tercantum di sisi kiri tab. Pengguna dapat memilih perintah yang tersedia dari menu. Hanya perintah menu yang dapat dikaitkan dengan pintasan keyboard. Setelah pengguna memasukkan pintasan baru, tombol Tetapkan menjadi diaktifkan. Ketika pengguna mengklik tombol ini, aplikasi mengaitkan perintah yang dipilih dengan pintasan tersebut.

Semua pintasan keyboard yang saat ini ditetapkan tercantum dalam kotak daftar di kolom kanan. Pengguna juga dapat memilih pintasan individual dan menghapusnya, atau mengatur ulang semua pemetaan untuk aplikasi.

Jika Anda ingin mendukung kustomisasi ini di aplikasi, Anda harus membuat objek CKeyboardManager . Untuk membuat CKeyboardManager objek, panggil fungsi CWinAppEx::InitKeyboardManager. Metode ini membuat dan menginisialisasi manajer keyboard. Jika Anda membuat manajer keyboard secara manual, Anda masih harus memanggil CWinAppEx::InitKeyboardManager untuk menginisialisasinya.

Jika Anda menggunakan Wizard untuk membuat aplikasi Anda, Wizard akan menginisialisasi manajer keyboard. Setelah aplikasi Anda menginisialisasi manajer keyboard, kerangka kerja menambahkan tab Keyboard ke kotak dialog Kustomisasi .

Kustomisasi Mouse

Ilustrasi berikut ini memperlihatkan tab Mouse dari kotak dialog Kustomisasi .

Mouse tab in the Customize dialog box.
Tab Kustomisasi Mouse

Pengguna berinteraksi dengan tab ini untuk menetapkan perintah menu ke tindakan klik ganda mouse. Pengguna memilih tampilan dari sisi kiri jendela lalu menggunakan kontrol di sisi kanan untuk mengaitkan perintah dengan tindakan klik dua kali. Setelah pengguna mengklik Tutup, aplikasi menjalankan perintah terkait setiap kali pengguna mengklik dua kali di mana saja dalam tampilan.

Secara default, kustomisasi mouse tidak diaktifkan saat Anda membuat aplikasi dengan menggunakan Wizard.

Untuk mengaktifkan kustomisasi mouse

  1. Inisialisasi objek CMouseManager dengan memanggil CWinAppEx::InitMouseManager.

  2. Dapatkan pointer ke manajer mouse dengan menggunakan CWinAppEx::GetMouseManager.

  3. Tambahkan tampilan ke manajer mouse dengan menggunakan metode CMouseManager::AddView . Lakukan ini untuk setiap tampilan yang ingin Anda tambahkan ke manajer mouse.

Setelah aplikasi Anda menginisialisasi manajer mouse, kerangka kerja menambahkan tab Mouse ke kotak dialog Kustomisasi. Jika Anda tidak menambahkan tampilan apa pun, mengakses tab akan menyebabkan pengecualian yang tidak tertangani. Setelah Anda membuat daftar tampilan, tab Mouse tersedia untuk pengguna.

Saat Anda menambahkan tampilan baru ke manajer mouse, Anda memberinya ID unik. Jika Anda ingin mendukung kustomisasi mouse untuk jendela, Anda harus memproses pesan WM_LBUTTONDBLCLICK dan memanggil fungsi CWinAppEx::OnViewDoubleClick . Saat Anda memanggil fungsi ini, salah satu parameternya adalah ID untuk jendela tersebut. Programmer bertanggung jawab untuk melacak nomor ID dan objek yang terkait dengannya.

Masalah keamanan

Seperti yang dijelaskan dalam Alat yang ditentukan pengguna, pengguna dapat mengaitkan ID alat yang ditentukan pengguna dengan peristiwa klik ganda. Saat pengguna mengklik dua kali tampilan, aplikasi mencari alat pengguna yang cocok dengan ID terkait. Jika aplikasi menemukan alat pencocokan, aplikasi akan menjalankan alat. Jika aplikasi tidak dapat menemukan alat yang cocok, aplikasi akan mengirim pesan WM_COMMAND dengan ID ke tampilan yang diklik dua kali.

Pengaturan yang disesuaikan disimpan dalam registri. Dengan mengedit registri, penyerang dapat mengganti ID alat pengguna yang valid dengan perintah arbitrer. Saat pengguna mengklik dua kali tampilan, tampilan memproses perintah yang ditanam penyerang. Ini dapat menyebabkan perilaku yang tidak terduga dan berpotensi berbahaya.

Selain itu, serangan semacam ini dapat melewati perlindungan antarmuka pengguna. Misalnya, aplikasi telah menonaktifkan pencetakan. Artinya, di antarmuka penggunanya, menu cetak dan tombol tidak tersedia. Biasanya ini mencegah aplikasi mencetak. Tetapi jika penyerang mengedit registri, pengguna sekarang dapat mengirim perintah cetak secara langsung dengan mengklik dua kali tampilan, melewati elemen antarmuka pengguna yang tidak tersedia.

Untuk melindungi dari serangan semacam ini, tambahkan kode ke handler perintah aplikasi Anda untuk memverifikasi bahwa perintah valid sebelum dijalankan. Jangan bergantung pada antarmuka pengguna untuk mencegah perintah dikirim ke aplikasi.

Baca juga

Kustomisasi untuk MFC
Kelas CKeyboardManager
Kelas CMouseManager
Implikasi Keamanan Kustomisasi