コード例 #1
0
ファイル: Keys.cs プロジェクト: latestalexey/WinExt
        static public void PressKeyVK(WinAPI.KeyCode key, bool press, bool release, bool compatible)
        {
            if (key > WinAPI.KeyCode.MouseFirst)
            {
                switch (key)
                {
                case WinAPI.KeyCode.MouseLClick:
                    WinAPI.mouse_event(WinAPI.MouseEventFlag.LeftDown, 0, 0, 0, 0);
                    WinAPI.mouse_event(WinAPI.MouseEventFlag.LeftUp, 0, 0, 0, 0);
                    break;

                case WinAPI.KeyCode.MouseLDown:
                    WinAPI.mouse_event(WinAPI.MouseEventFlag.LeftDown, 0, 0, 0, 0);
                    break;

                case WinAPI.KeyCode.MouseLUp:
                    WinAPI.mouse_event(WinAPI.MouseEventFlag.LeftUp, 0, 0, 0, 0);
                    break;

                case WinAPI.KeyCode.MouseRClick:
                    WinAPI.mouse_event(WinAPI.MouseEventFlag.RightDown, 0, 0, 0, 0);
                    WinAPI.mouse_event(WinAPI.MouseEventFlag.RightUp, 0, 0, 0, 0);
                    break;

                case WinAPI.KeyCode.MouseRDown:
                    WinAPI.mouse_event(WinAPI.MouseEventFlag.RightDown, 0, 0, 0, 0);
                    break;

                case WinAPI.KeyCode.MouseRUp:
                    WinAPI.mouse_event(WinAPI.MouseEventFlag.RightUp, 0, 0, 0, 0);
                    break;
                }
                return;
            }

            uint scanCode = WinAPI.MapVirtualKey((uint)key, 0);
            uint extended = IsExtendedKey(key) ? (uint)WinAPI.KeybdEventFlag.ExtendedKey : 0;

            if (compatible)
            {
                extended = 0;
            }

            if (press)
            {
                WinAPI.keybd_event((byte)key, (byte)scanCode, (WinAPI.KeybdEventFlag)extended, 0);
            }

            if (release)
            {
                WinAPI.keybd_event((byte)key, (byte)scanCode, (WinAPI.KeybdEventFlag)(extended | (uint)WinAPI.KeybdEventFlag.KeyUp), 0);
            }
        }
コード例 #2
0
ファイル: Keys.cs プロジェクト: latestalexey/WinExt
        static public bool IsExtendedKey(WinAPI.KeyCode key)
        {
            switch (key)
            {
            case WinAPI.KeyCode.Left:
            case WinAPI.KeyCode.Up:
            case WinAPI.KeyCode.Right:
            case WinAPI.KeyCode.Down:
            case WinAPI.KeyCode.Prior:
            case WinAPI.KeyCode.Next:
            case WinAPI.KeyCode.End:
            case WinAPI.KeyCode.Home:
            case WinAPI.KeyCode.Insert:
            case WinAPI.KeyCode.Delete:
            case WinAPI.KeyCode.Divide:
            case WinAPI.KeyCode.NumLock:
                return(true);

            default:
                return(false);
            }
        }
コード例 #3
0
ファイル: Keys.cs プロジェクト: latestalexey/WinExt
 static public void PressKeyVK(WinAPI.KeyCode key)
 {
     PressKeyVK(key, true, true, false);
 }