Как использовать C # для отправки Key Down и Key Down в другое приложение - PullRequest
0 голосов
/ 20 октября 2019

У меня есть решение, которое я использую для отправки клавишных вводов в другое приложение, однако, когда я отправляю «Key Down», оно фактически не удерживает эту клавишу, мне нужно было бы спамить «key down» в некоторыхцикл обновления.

Буду признателен, если кто-нибудь покажет мне, как я мог бы (используя winforms) отправить поддельный Key Down в другое приложение, но я не ищу нажатия клавиш.

[DllImport("user32.dll")]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        [DllImport("user32.dll")]
        public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
        [DllImport("user32.dll")]
        public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

        public static void SendKeystroke(Keys k)
        {
            const uint WM_KEYDOWN = 0x100;

            IntPtr WindowToFind = FindWindow(null, "application");

            IntPtr result3 = SendMessage(WindowToFind, WM_KEYDOWN, ((IntPtr)(ushort)k), (IntPtr)0);
        }

        public static void EndKeyStroke(Keys k)
        {
            const uint WM_KEYUP = 0x101;

            IntPtr WindowToFind = FindWindow(null, "application");

            IntPtr result3 = SendMessage(WindowToFind, WM_KEYUP, ((IntPtr)(ushort)k), (IntPtr)0);
        }

1 Ответ

0 голосов
/ 20 октября 2019

Когда клавиша удерживается нажатой, приложение закачивается насосом сообщений с WM_KEYDOWN. WM_KEYUP отправляется только когда ключ отпущен.

...