Beispiel #1
0
        public static char ModifiedChar(this char value, KeyModifier modifier)
        {
            var cs = new CharStates(value);

            var i = 0;

            while (i < 256)
            {
                var testedChar = Convert.ToChar(i);
                var pcs        = new CharStates(testedChar);
                if (pcs.VirtualCode == cs.VirtualCode && pcs.ShiftState == (int)modifier)
                {
                    return(testedChar);
                }
                i++;
            }
            return(Convert.ToChar(0));
        }
Beispiel #2
0
        public static void SimulateKeyPress(this char ch)
        {
            var cs = new CharStates(ch);

            if (cs.ShiftState == (int)KeyModifier.Shift)
            {
                keybd_event(VirtualKeyCodes.VK_SHIFT, 0, KeyboardEventFlags.KEYEVENTF_EXTENDEDKEY, UIntPtr.Zero);
            }
            if (cs.ShiftState == (int)KeyModifier.Alt)
            {
                keybd_event(VirtualKeyCodes.VK_MENU, 0, KeyboardEventFlags.KEYEVENTF_EXTENDEDKEY, UIntPtr.Zero);
            }
            keybd_event(cs.VirtualCode, 0, KeyboardEventFlags.NOTHING, UIntPtr.Zero);
            keybd_event(cs.VirtualCode, 0, KeyboardEventFlags.KEYEVENTF_KEYUP, UIntPtr.Zero);
            if (cs.ShiftState == (int)KeyModifier.Alt)
            {
                keybd_event(VirtualKeyCodes.VK_MENU, 0, KeyboardEventFlags.KEYEVENTF_EXTENDEDKEY_AND_KEYUP, UIntPtr.Zero);
            }
            if (cs.ShiftState == (int)KeyModifier.Shift)
            {
                keybd_event(VirtualKeyCodes.VK_SHIFT, 0, KeyboardEventFlags.KEYEVENTF_EXTENDEDKEY_AND_KEYUP, UIntPtr.Zero);
            }
        }
Beispiel #3
0
        public static ArrayList GetKeyboardLayoutCharachters(string layout = null)
        {
            var hkl = IntPtr.Zero;

            if (!String.IsNullOrEmpty(layout))
            {
                hkl = LoadKeyboardLayout(layout, LoadKeyboardLayoutFlags.KLF_ACTIVATE);
            }

            var chars     = new ArrayList();
            var byteValue = 0;

            while (byteValue < 256)
            {
                var charDetails = new ArrayList();
                var ch          = Convert.ToChar(byteValue);

                // The character
                charDetails.Add(Convert.ToString(ch));

                // The byte value of the character
                charDetails.Add(byteValue);

                // Hexadecimal value of the character
                var hexaForm = Convert.ToString(byteValue, 16).ToUpper();
                if (hexaForm.Length == 1)
                {
                    hexaForm = "0" + hexaForm;
                }
                charDetails.Add(hexaForm);

                // Virtual code
                var cs = new CharStates(ch);
                charDetails.Add(cs.VirtualCode);

                // KeyData
                var keyData = (Keys)cs.VirtualCode;
                charDetails.Add(Convert.ToString(keyData));

                // VirtualCode to char
                var nch = MapVirtualKey((VirtualKeyCodes)cs.VirtualCode, MapVirtualKeyMapTypes.MAPVK_VK_TO_CHAR);
                charDetails.Add(Convert.ToString(Convert.ToChar(nch)));

                // Scan code
                var nch2 = MapVirtualKey((VirtualKeyCodes)cs.VirtualCode, MapVirtualKeyMapTypes.MAPVK_VK_TO_VSC);
                charDetails.Add(Convert.ToString(nch2));
                charDetails.Add(Convert.ToString(nch));

                nch2 = MapVirtualKey((VirtualKeyCodes)nch2, MapVirtualKeyMapTypes.MAPVK_VSC_TO_VK_EX);
                charDetails.Add(Convert.ToString(nch2));

                AddKeyModifierToCharDetails(charDetails, cs.ShiftState, ch, KeyModifier.Shift);
                AddKeyModifierToCharDetails(charDetails, cs.ShiftState, ch, KeyModifier.Alt);
                AddKeyModifierToCharDetails(charDetails, cs.ShiftState, ch, KeyModifier.Ctrl);

                chars.Add(charDetails);
                byteValue++;
            }
            if (hkl != IntPtr.Zero)
            {
                UnloadKeyboardLayout(hkl);
            }
            return(chars);
        }