Compartilhar via


How to Modify Program Key Behavior

Windows Mobile SupportedWindows Embedded CE Not Supported

9/8/2008

Você pode facilmente estender o programa-chave associado comportamento do seu aplicativo. Este tópico usa um chamado aplicativo exemplo (testkeystestkeys.exe) para demonstrar o seguinte tarefas:

  • Como uma chave programa está atribuído e registrado.
  • Como verificar se seu aplicativo está no primeiro plano e colocá-lo ENC se não estiver.
  • Como a versão a chave programa quando o aplicativo for fechado.

Para determinar qual programa chave está atribuída atualmente a testkeys e para registrar que atalho do teclado quando testkeys.EXE for iniciado

  • O manipulador de mensagem WM_CREATE é um local conveniente para o seguinte codificar.

    Observação

    A chamar para a função Windows Embedded CE RegisterHotKey usa MOD_WIN Como o modificador atalho do teclado porque enviar todas as chaves de hardware MOD_WIN Com seus código de chave.

    BYTE appkey;
    appkey = SHGetAppKeyAssoc(_T("testkeys.exe"));
    if (appkey != 0)
    {
        if (!RegisterHotKey(hWnd, 400, MOD_WIN, appkey)) 
        {
            // Can't register keyboard shortcut.
            MessageBox(NULL, _T("Can't register hotkey."),
                             _T("Warning"), MB_OK);
            exit(0);  // Replace with specific error handling.
        }
    }
    

Para verificar se seu aplicativo está no primeiro plano e colocá-lo para o primeiro plano se não for

  • O seguinte exemplo supõe que você é manipulação de WM_HOTKEY mensagem como parte de WndProc método usado para identificador Windows mensagens.

    Observação

    Você também precisa codificar para executar qualquer ação especial, such as alterar modos de exibição, com base no pressionamento de atalho do teclado.

    case WM_HOTKEY:
        switch(wParam)
        {
            case 400:
        // This is the keyboard shortcut you registered.
        // Is the application in the foreground?
        if (hWnd != GetForegroundWindow())
        {
        // No, bring it forward and that is all.
        // Set focus to foremost child window.
        // The "| 0x01" is used to bring any owned 
        // windows to the foreground and open them.
        SetForegroundWindow((HWND)((ULONG) hWnd | 0x00000001));
        }
        else
        {
        // Already on top, so take an action.
        MessageBox(hWnd, _T("Hotkey Pressed"), 
                         _T("Hotkey"), MB_OK);
        }
        break;
    

A versão a chave programa voltar para o shell

  • Quando o aplicativo fechado, ele deve chamar UnregisterHotkey a versão a chave programa voltar para o shell, como mostra o seguinte exemplo.

        case WM_DESTROY:
            appkey = SHGetAppKeyAssoc(_T("testkeys.exe"));
            if (appkey != 0)
            {
                if(!UnregisterHotKey(hWnd, 400)) 
            {
                // Can't unregister hotkey.
                MessageBox(NULL, _T("Can't unregister hotkey"),
                                 _T("Warning"), MB_OK);
                exit(0);  // Replace with specific error handling.
            }
        }
    

See Also

Tasks

How to Program a Press-and-Hold Feature

Concepts

Program Keys

Other Resources

Mobile Device Hardware Overview