Имитация нажатия ПКМ в стороннем приложении - C#

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

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

Привет, понимаю что тема обсуждалась миллион раз, но я уже перерыл все что нашел и никак не дойдет что не так... Смотрите, смастерил хук на мишку, все работает. Мне нужно, чтобы при нажатии на колесико, в левую программу передавалось нажатие ПКМ. Нажатие колосика отлавливается, но посылать в программу ПКМ не хочет. Использовал PostMessage(handle, 0x100, 0x02, 0); - никак, использовал Mouse Events
 [DllImport("User32.dll")]
        static extern void mouse_event(MouseFlags dwFlags, int dx, int dy, int dwData, UIntPtr dwExtraInfo);
 
        //для удобства использования создаем перечисление с необходимыми флагами (константами), которые определяют действия мыши: 
        [Flags]
        enum MouseFlags
        {
            Move = 0x0001, LeftDown = 0x0002, LeftUp = 0x0004, RightDown = 0x0008,
            RightUp = 0x0010, Absolute = 0x8000
        };
// использовал в методде так:   mouse_event(MouseFlags.Absolute | MouseFlags.RightUp, x, y, 0, UIntPtr.Zero);
но он работает только в окнах Винды ( только в них все работает как надо)... а вот так именно в приложение пихнуть - неа... Какие ещё варианты есть?

Решение задачи: «Имитация нажатия ПКМ в стороннем приложении»

textual
Листинг программы
public enum WMessages : int
{
    WM_LBUTTONDOWN = 0x201,
    WM_LBUTTONUP = 0x202
}
 
[DllImport("user32.dll", SetLastError = true)]
public static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
 
public void Click(IntPtr hWnd, Point p)
{
    int lp = (p.X << 16) | (p.Y & 0xffff);
    PostMessage(hWnd, (uint)WMessages.WM_LBUTTONDOWN, 0, lp);
    PostMessage(hWnd, (uint)WMessages.WM_LBUTTONUP, 0, lp);
}

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


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

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

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