Aracılığıyla paylaş


Klavye ve Fare Özelleştirmesi

MFC, uygulamanızın kullanıcısının klavye ve fare girişini nasıl işlediğini özelleştirmesine olanak tanır. Kullanıcı, komutlara klavye kısayolları atayarak klavye girişini özelleştirebilir. Kullanıcı, uygulamanın belirli pencerelerinde çift tıkladığında yürütülmesi gereken komutu seçerek fare girişini de özelleştirebilir. Bu konuda, uygulamanız için girişin nasıl özelleştirileceği açıklanmaktadır.

Özelleştirme iletişim kutusunda, kullanıcı fare ve klavye için özel denetimleri değiştirebilir. Bu iletişim kutusunu görüntülemek için, kullanıcı Görünüm menüsünde Özelleştir'i işaret eder ve ardından Araç Çubukları ve Yerleştirme'ye tıklar. İletişim kutusunda, kullanıcı Klavye sekmesine veya Fare sekmesine tıklar.

Klavye Özelleştirmesi

Aşağıdaki çizimde Özelleştirme iletişim kutusunun Klavye sekmesi gösterilmektedir.

Keyboard tab in the Customize dialog box.
Klavye Özelleştirme Sekmesi

Kullanıcı, bir komuta bir veya daha fazla klavye kısayolu atamak için klavye sekmesiyle etkileşim kurar. Kullanılabilir komutlar sekmenin sol tarafında listelenir. Kullanıcı menüden kullanılabilir herhangi bir komutu seçebilir. Klavye kısayoluyla yalnızca menü komutları ilişkilendirilebilir. Kullanıcı yeni bir kısayol girdikten sonra Ata düğmesi etkinleştirilir. Kullanıcı bu düğmeye tıkladığında, uygulama seçili komutu bu kısayolla ilişkilendirir.

Şu anda atanmış olan klavye kısayollarının tümü, sağ sütundaki liste kutusunda listelenir. Kullanıcı ayrıca tek tek kısayolları seçip kaldırabilir veya uygulama için tüm eşlemeleri sıfırlayabilir.

Uygulamanızda bu özelleştirmeyi desteklemek istiyorsanız, bir CKeyboardManager nesnesi oluşturmanız gerekir. Nesne oluşturmak CKeyboardManager için CWinAppEx::InitKeyboardManager işlevini çağırın. Bu yöntem bir klavye yöneticisi oluşturur ve başlatır. El ile bir klavye yöneticisi oluşturursanız, yine de başlatmak için aramanız CWinAppEx::InitKeyboardManager gerekir.

Uygulamanızı oluşturmak için Sihirbazı kullanırsanız, Sihirbaz klavye yöneticisini başlatır. Uygulamanız klavye yöneticisini başlattıktan sonra, çerçeve Özelleştirme iletişim kutusuna bir Klavye sekmesi ekler.

Fare Özelleştirmesi

Aşağıdaki çizimde Özelleştirme iletişim kutusunun Fare sekmesi gösterilmektedir.

Mouse tab in the Customize dialog box.
Fare Özelleştirme Sekmesi

Kullanıcı, fare çift tıklama eylemine bir menü komutu atamak için bu sekmeyle etkileşim kurar. Kullanıcı pencerenin sol tarafından bir görünüm seçer ve ardından bir komutu çift tıklama eylemiyle ilişkilendirmek için sağ taraftaki denetimleri kullanır. Kullanıcı Kapat'a tıkladıktan sonra, kullanıcı görünümde herhangi bir yere çift tıklayışında uygulama ilişkili komutu yürütür.

Varsayılan olarak, Sihirbazı kullanarak bir uygulama oluşturduğunuzda fare özelleştirmesi etkinleştirilmez.

Fare özelleştirmesini etkinleştirmek için

  1. CWinAppEx::InitMouseManager çağrısı yaparak bir CMouseManager nesnesi başlatın.

  2. CWinAppEx::GetMouseManager kullanarak fare yöneticisine bir işaretçi alın.

  3. CMouseManager::AddView yöntemini kullanarak fare yöneticisine görünümler ekleyin. Fare yöneticisine eklemek istediğiniz her görünüm için bunu yapın.

Uygulamanız fare yöneticisini başlattıktan sonra çerçeve, Fare sekmesini Özelleştir iletişim kutusuna ekler. Görünüm eklemezseniz, sekmeye erişmek işlenmeyen bir özel duruma neden olur. Görünümlerin listesini oluşturduktan sonra Fare sekmesi kullanıcının kullanımına sunulur.

Fare yöneticisine yeni bir görünüm eklediğinizde, bu görünüme benzersiz bir kimlik verirsiniz. Bir pencere için fare özelleştirmesini desteklemek istiyorsanız, WM_LBUTTONDBLCLICK iletisini işlemeniz ve CWinAppEx::OnViewDoubleClick işlevini çağırmanız gerekir. Bu işlevi çağırdığınızda, parametrelerden biri bu pencerenin kimliğidir. Kimlik numaralarını ve bunlarla ilişkili nesneleri izlemek programcının sorumluluğundadır.

GüvenlikLe ilgili Endişeler

Kullanıcı Tanımlı Araçlar'da açıklandığı gibi, kullanıcı tanımlı bir araç kimliğini çift tıklama olayıyla ilişkilendirebilir. Kullanıcı bir görünüme çift tıkladığında, uygulama ilişkili kimlikle eşleşen bir kullanıcı aracı arar. Uygulama eşleşen bir araç bulursa aracı yürütür. Uygulama eşleşen bir araç bulamazsa, çift tıklanan görünüme kimliğine sahip bir WM_COMMAND iletisi gönderir.

Özelleştirilmiş ayarlar kayıt defterinde depolanır. Saldırgan, kayıt defterini düzenleyerek geçerli bir kullanıcı aracı kimliğini rastgele bir komutla değiştirebilir. Kullanıcı bir görünüme çift tıkladığında, görünüm saldırganın yerleştirmiş olduğu komutu işler. Bu beklenmeyen ve potansiyel olarak tehlikeli davranışlara neden olabilir.

Buna ek olarak, bu tür bir saldırı kullanıcı arabirimi korumalarını atlayabilir. Örneğin, bir uygulamanın yazdırmanın devre dışı bırakıldığını varsayalım. Başka bir ifadeyle, kullanıcı arabiriminde Yazdır menüsü ve düğmesi kullanılamaz. Normalde bu, uygulamanın yazdırmasını engeller. Ancak bir saldırgan kayıt defterini düzenlemişse, kullanıcı artık görünüme çift tıklayarak ve kullanılamayan kullanıcı arabirimi öğelerini atlayarak yazdırma komutunu doğrudan gönderebilir.

Bu tür saldırılara karşı koruma sağlamak için uygulama komut işleyicinize kod ekleyerek bir komutun yürütülmeden önce geçerli olduğunu doğrulayın. Bir komutun uygulamaya gönderilmesini önlemek için kullanıcı arabirimine bağımlı olmayın.

Ayrıca bkz.

MFC için Özelleştirme
CKeyboardManager Sınıfı
CMouseManager Sınıfı
Özelleştirmenin Güvenlikle İlgili Etkileri