Compartilhar via


Personalização de mouse e teclado

The Visual C++ 2008 Feature Pack permite que o usuário personalizar a forma como o seu aplicativo lida com teclado e mouse de entrada. O usuário pode personalizar teclado atribuindo teclas de atalho a comandos.O usuário também pode personalizar a entrada do mouse, selecionando o comando deve ser executado quando um usuário clica duas vezes dentro de janelas específicas do seu aplicativo.Este tópico explica como personalizar a entrada para seu aplicativo.

No Personalização caixa de diálogo o usuário pode alterar os controles personalizados para o mouse e teclado.Para exibir essa janela, o usuário seleciona Modo de exibição, and then Personalizar from Barras de ferramentas e encaixe menu e, em seguida, clica em ambos o Teclado or Mouse personalização guias.

Personalização do teclado

A ilustração a seguir mostra o Teclado Guia de do Personalização caixa de diálogo:

Guia de personalização do teclado

O usuário interage com a guia de teclado para atribuir um ou mais teclas de atalho para um comando.Os comandos disponível são listados no lado esquerdo da guia.O usuário pode selecionar qualquer comando disponível no menu.Somente comandos de menu podem ser associados a um atalho chave.Depois que o usuário insere um novo atalho chave, a Atribuir botão se torna ativado.Quando o usuário clica nesse botão, o aplicativo associa o comando selecionado essa tecla de atalho.

Todos os das teclas de atalho atribuída no momento são listados na caixa de listagem na coluna à direita.O usuário também pode selecionar as teclas de atalho individual e removê-los ou reiniciar todos os mapeamentos do aplicativo.

Se você quiser suportar essa personalização em seu aplicativo, você deve criar um CKeyboardManager objeto.Para criar um CKeyboardManager objeto, telefonar a função CWinAppEx::InitKeyboardManager. Esse método cria e inicializa um Gerenciador de teclado.Se você criar um teclado Gerenciador manualmente, você ainda deve telefonar CWinAppEx::InitKeyboardManager para inicializá-lo.

Se você usar o Assistente para criar seu aplicativo, o assistente irá inicializar o Gerenciador de teclado.Depois que seu aplicativo inicializa o Gerenciador de teclado, a estrutura adiciona um Teclado Guia de a Personalização caixa de diálogo.

Personalização de mouse

A ilustração a seguir mostra o Mouse Guia de do Personalização caixa de diálogo:

Guia de personalização de mouse

O usuário interage com essa guia para atribuir um menu de comando para o mouse clicar duas vezes em ação.O usuário seleciona um modo de exibição do lado esquerdo da janela e, em seguida, usa os controles do lado direito para associar um comando com o clicar duas vezes ação.Depois que o usuário clicar em Fechar, o aplicativo executa o comando associado sempre que o usuário clica duas vezes em qualquer lugar no modo de exibição.

Por padrão, mouse personalização não está habilitada quando você cria um aplicativo usando o assistente.Para habilitá-lo, execute as seguintes etapas:

  1. Inicializar um CMouseManager objeto chamando CWinAppEx::InitMouseManager.

  2. Obter um ponteiro para o gerente de mouse com CWinAppEx::GetMouseManager.

  3. Adicionar modos de exibição o Gerenciador de mouse usando o CMouseManager::AddView método. Fazer isso para cada modo de exibição que deseja adicionar ao Gerenciador de mouse.

Depois que seu aplicativo inicializa o Gerenciador de mouse, a estrutura adiciona o Mouse Guia de a Personalizar caixa de diálogo.Se você não adicionar nenhum modo de exibição, acessar a guia causará uma exceção sem tratamento.Após você ter criado uma lista dos modos de exibição, a Mouse guia está disponível para o usuário.

Se você adiciona um novo modo de exibição para o Gerenciador de mouse, você atribuir uma ID exclusiva.Se desejar oferecer suporte a personalização do mouse para uma janela, você deve processar o WM_LBUTTONDBLCLICK mensagem e a telefonar a CWinAppEx::OnViewDoubleClick função. Quando você chamar essa função, um dos parâmetros é a ID para que a janela.É responsabilidade do programador para controlar os números de ID e os objetos associados a eles.

Questões de segurança

Conforme descrito em Ferramentas definidas pelo usuário, o usuário pode associar uma ID de ferramenta definida pelo usuário com o evento de clicar duplo. Quando o usuário clica duas vezes em um modo de exibição, o aplicativo procura uma ferramenta de usuário que coincide com a ID do associado.Se o aplicativo encontra uma ferramenta correspondente, ele executa a ferramenta.Se o aplicativo não conseguir encontrar uma ferramenta correspondente, ele envia uma mensagem WM_COMMAND com a ID para o modo de exibição que foi clicado duas vezes.

As configurações personalizadas são armazenadas no registro.Editando o registro, um invasor pode substituir uma ID de ferramenta de usuário válido por um comando arbitrário.Quando o usuário clica duas vezes em um modo de exibição, o modo de exibição processa o comando que o invasor plantado.Isso poderia causar comportamento inesperado ou potencialmente perigoso.

Além disso, esse tipo de ataque pode ignorar proteções de interface do usuário.Por exemplo, suponha que um aplicativo tem impressão desabilitado.Isto é, na sua interface de usuário, a Impressão menu e botão são não disponível.Normalmente, isso impede que o aplicativo de impressão.Mas se um invasor editado no registro, um usuário poderia agora pode enviar o comando de impressão diretamente clicando duas vezes em modo de exibição, ignorando os elementos da interface do usuário que não estão disponíveis.

Para se proteger contra esse tipo de ataque, adicione código ao manipulador de comandos do seu aplicativo para verificar se um comando é válido antes de ser executado.Não dependem da interface do usuário para impedir que um comando seja enviado para o aplicativo.

Consulte também

Conceitos

MFC recurso empacotar para o Visual C++ 2008

segurança Implications de personalização

Referência

Classe CKeyboardManager

Classe CMouseManager