Tastatur- Maus-Anpassung

MFC kann der Benutzer der Anwendung anzupassen, wie es Tastatur- und Mauseingaben behandeln.Der Benutzer kann Tastatureingaben anpassen, indem Sie Tastenkombinationen für Befehle zuweist.Der Benutzer kann die Mauseingabe auch anpassen, indem er den Befehl auswählt, der ausgeführt werden soll, wenn der Benutzer innerhalb der bestimmten Fenster der Anwendung doppelklickt.In diesem Thema wird erläutert, wie die Eingabe für Ihre Anwendung anpassen.

Klicken Sie im Dialogfeld Anpassung für das benutzerdefinierte Steuerelement können Benutzer die Maus und Tastatur ändern.Um dieses Dialogfeld anzuzeigen, klicken Sie auf Anpassen zeigt die Benutzer im Menü Ansicht und klicken Sie dann auf Symbolleisten und Andocken.Im Dialogfeld klickt der Benutzer entweder die Tastatur auf die Registerkarte oder Registerkarte Maus.

Tastatur-Anpassung

Die folgende Abbildung zeigt die Registerkarte Tastatur des Dialogfelds Anpassung an.

Tastatur-Anpassungs-Registerkarte

Die Registerkarte Tastatur im Dialogfeld Anpassen

Der Benutzer hat auf die Registerkarte Tastatur ein, um einen oder mehrere Tastenkombinationen zu einem Befehl zugewiesen werden soll.Die verfügbaren Befehle werden auf der linken Seite der Registerkarte aufgelistet.Der Benutzer kann jeden verfügbaren Befehl aus dem Menü auswählen.Nur Menübefehle können mit einer Zugriffstaste zugeordnet sind.Nachdem der Benutzer eine neue Verknüpfung eingeben, wird die Schaltfläche Zuweisen aktiviert wird.Wenn der Benutzer auf diese Schaltfläche klickt, wird die Anwendung den ausgewählten Befehl mit dem Verknüpfung zu.

Alle aktuell zugewiesenen Zugriffstasten werden im Listenfeld in der rechten Spalte aufgelistet.Der Benutzer kann auch Verknüpfungen einzelne auswählen und sie entfernen oder alle Zuordnungen für die Anwendung zurücksetzen.

Wenn Sie diese Anpassung in der Anwendung unterstützen möchten, müssen Sie ein CKeyboardManager-Objekt erstellen.Um ein CKeyboardManager-Objekt zu erstellen, rufen Sie die Funktion CWinAppEx::InitKeyboardManager an.Diese Methode erstellt und initialisiert eine Tastatur Manager.Wenn Sie einen Tastatur Manager manuell erstellen, müssen Sie CWinAppEx::InitKeyboardManager trotzdem aufrufen, um es zu initialisieren.

Wenn Sie den Assistenten verwenden, um die Anwendung zu erstellen, stellt der Assistent die Tastatur Manager.Nachdem die Anwendung den Manager der Tastatur initialisiert, fügt das Framework eine Registerkarte Tastatur zum Dialogfeld Anpassung hinzu.

Maus-Anpassung

Die folgende Abbildung zeigt die Registerkarte Maus des Dialogfelds Anpassung an.

Maus-Anpassungs-Registerkarte

Die Registerkarte Maus im Dialogfeld Anpassen

Der Benutzer hat auf diese Registerkarte, um einen Menübefehl mit der Maus doppelklickaktion zuzuweisen.Der Benutzer wählt eine Ansicht von der linken Seite des Fensters aus und verwendet dann die Steuerelemente auf der rechten Seite, um einen Befehl mit der Doppelklickaktion zuzuordnen.Nachdem der Benutzer auf Schließen klickt, führt die Anwendung den zugeordneten Befehl aus, wenn der Benutzer auf eine beliebige Stelle in der Ansicht doppelklickt.

Anpassung der Maus ist standardmäßig nicht aktiviert, wenn Sie eine Anwendung erstellen, indem Sie den Assistenten verwenden.

So aktivieren Sie die Anpassung der Maus

  1. Initialisieren Sie ein CMouseManager-Objekt, indem Sie CWinAppEx::InitMouseManager aufrufen.

  2. Abrufen eines Zeigers auf das Mausrad Manager, indem er CWinAppEx::GetMouseManager verwendet.

  3. Fügen Sie dem Ansichten Manager Maus hinzu, indem Sie die CMouseManager::AddView-Methode verwenden.Vorgehensweise für jede Ansicht, die Sie dem Mauszeiger auf den Manager hinzufügen möchten.

Nachdem die Anwendung den Mauszeiger Manager initialisiert, fügt das Framework die Registerkarte Maus zum Dialogfeld Anpassen hinzu.Wenn Sie keine Sichten hinzufügen, führt den Zugriff auf die Registerkarte einen Ausnahmefehler.Nachdem Sie eine Liste von Ansichten erstellt haben, ist die Registerkarte Maus für den Benutzer verfügbar.

Wenn Sie eine neue Ansicht der Maus Manager hinzufügen, geben Sie ihm eine eindeutige ID.Wenn Sie die Maus Farbanpassung für ein Fenster unterstützen möchten, müssen Sie die WM_LBUTTONDBLCLICK Nachricht verarbeiten und die CWinAppEx::OnViewDoubleClick-Funktion aufrufen.Wenn Sie diese Funktion aufrufen, ist einer der Parameter die ID für dieses Fenster.Es liegt in der Verantwortung des Programmierers, die ID-Nummern und die Objekte nachzuverfolgen, die ihnen zugewiesen werden.

Sicherheitsaspekte

Wie in Benutzerdefinierte Tools beschrieben, kann der Benutzer eine benutzerdefinierte Tool wird mit dem ID auf.Wenn der Benutzer auf eine Ansicht doppelklicken, sucht die Anwendung nach einem Tool, mit dem Benutzer entspricht die zugeordnete ID.Wenn die Anwendung ein übereinstimmendes Tool findet, wird das Tool aus.Wenn die Anwendung ein übereinstimmendes Tool finden kann, sendet sie einer WM_COMMAND-Meldung mit der ID auf die Sicht, auf das doppelgeklickt wurde.

Die benutzerdefinierten Einstellungen werden in der Registrierung gespeichert.Durch Aufrufen der Registrierung bearbeitet, kann ein Angreifer eine ID Tool des gültigen Benutzers durch einen beliebigen Befehl ersetzen.Wenn der Benutzer auf eine Ansicht doppelklicken, verarbeitet die Ansicht den Befehl, den der Angreifer pflanzte.Dies kann zu unerwartetem Verhalten führen. gefährliches kann.

Darüber hinaus kann diese Art des Angriffs Benutzeroberflächenschutz umgehen.Angenommen, eine Anwendung den deaktivierten Drucken verfügt.Anders ausgedrückt in seiner Benutzeroberfläche, sind die Menü Drucken und die Schaltfläche nicht verfügbar.In der Regel verhindert dies die Anwendung beim Drucken.Wenn jedoch ein Angreifer die Registrierung bearbeitete, kann ein Benutzer könnte den Befehl Drucken jetzt direkt senden, indem er auf die Ansicht, und doppelklicken umging die Benutzeroberflächenelemente, die nicht verfügbar sind.

Um auf diese Art des Angriffs zu schützen, fügen Sie dem Code der Anwendung Klassenhandler Befehl hinzu, um sicherzustellen, dass ein Befehl gültig ist, bevor er ausgeführt wird.Hängen Sie nicht von der Benutzeroberfläche ab, um einen Befehl an die Anwendung gesendet werden.

Siehe auch

Referenz

CKeyboardManager-Klasse

CMouseManager-Klasse

Konzepte

Anpassung für MFC

Sicherheits-Auswirkungen der Anpassung