Как одновременно эмулировать нажатие кнопки мыши и клавиши? - C#

Узнай цену своей работы

Формулировка задачи:

Нужно сделать одновременную эмуляцию клика ЛКМ и к примеру Ctrl. Или чтобы Ctrl был зажат, и была возможность при этом эмулировать клик ЛКМ. В отдельности для эмуляции нажатия клавиш на клавиатуре я использую SendKeys.Send. Для эмуляции клика мышкой конструкцию:
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);

        private const int MOUSEEVENTF_LEFTDOWN = 0x02;
        private const int MOUSEEVENTF_LEFTUP = 0x04;
        private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
        private const int MOUSEEVENTF_RIGHTUP = 0x10;
 
 Cursor.Position = new Point(829, 475);
            Thread.Sleep(500);
            mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, Cursor.Position.X, Cursor.Position.Y, 0, 0);
Прошу предложите решения исходя из вышеописанного, но если есть более простое не требующие совмещения вышеописанных частей кода - еще лучше. Спасибо.

Решение задачи: «Как одновременно эмулировать нажатие кнопки мыши и клавиши?»

textual
Листинг программы
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
 
        
        private const int MOUSEEVENTF_LEFTDOWN = 0x02;
        private const int MOUSEEVENTF_LEFTUP = 0x04;
        private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
        private const int MOUSEEVENTF_RIGHTUP = 0x10;
 
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
        static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
 
 
        public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
        public const int VK_CONTROL = 0x11;
 
///////////////// здесь какой-то код
 
                keybd_event(VK_CONTROL, 0x9d, 0, 0); // Ctrl Press
 
                Cursor.Position = new Point(700, 350);
                Thread.Sleep(500);
 
                mouse_event(MOUSEEVENTF_LEFTDOWN, Cursor.Position.X, Cursor.Position.Y, 0, 0);
                mouse_event(MOUSEEVENTF_LEFTUP, Cursor.Position.X, Cursor.Position.Y, 0, 0); 
                
                keybd_event(VK_CONTROL, 0x9d, KEYEVENTF_KEYUP, 0);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы