Comment injecter la saisie clavier de plusieurs touches avec du code dans UWP


BWhelan

Essayer de simuler la pression des touches Tab et Shift + Tab (Tabulation inversée) avec des fonctions dans le Code Behind afin qu'elles puissent être utilisées avec des boutons ou dans ce cas d'autres touches du clavier.

La simulation de la tabulation fonctionne, je ne sais pas comment simuler la pression de 2 touches simultanément pour simuler Shift + Tab

        private void Tab(string s)
        {
            InputInjector inputInjector = InputInjector.TryCreate();
            var info = new InjectedInputKeyboardInfo();
            if (s == "Right")
            {
                info.VirtualKey = (ushort)(VirtualKey.Tab);
            }
            else if (s == "Left")
            {
                //This doesn't actually exist, but How would I do this?
                info.VirtualKey = (ushort)(VirtualKey.ShiftTab);
            }

            inputInjector.InjectKeyboardInput(new[] { info });
        }

        private void Grid_KeyDown(object sender, KeyRoutedEventArgs e)
        {
            switch (e.Key)
            {
                case VirtualKey.Number1:
                    Tab("Left");
                    break;
                case VirtualKey.Q:
                    Tab("Right");
                    break;
            }
        }

Jusqu'à présent, l'onglet fonctionne bien lorsque la touche Q est enfoncée, j'ai juste besoin de savoir comment faire Shift + Tab lorsque la touche Number1 est enfoncée. Toute aide serait grandement appréciée!

BWhelan

Pour répondre à ma propre question. Après avoir aidé un autre utilisateur à répondre à une question similaire, le moyen le plus simple de simuler une pression sur plusieurs boutons est le suivant:

            InputInjector inputInjector = InputInjector.TryCreate();
            var shift = new InjectedInputKeyboardInfo();
            shift.VirtualKey = (ushort)(VirtualKey.Shift);
            shift.KeyOptions = InjectedInputKeyOptions.None;


            var tab = new InjectedInputKeyboardInfo();
            tab.VirtualKey = (ushort)(VirtualKey.Tab);
            tab.KeyOptions = InjectedInputKeyOptions.None;
            inputInjector.InjectKeyboardInput(new[] { shift, tab });

Dans cet exemple, j'utilise SHIFT + Tab.

Articles connexes