Как отменить нажатие левой кнопки мыши, не нажимая на С#?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как отменить нажатие левой кнопки мыши, не нажимая на С#?

Сообщение Anonymous »

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

Я нашел https://github.com /gmamaladze/globalmousekeyhook и перехватываем с его помощью события.

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

Есть ли способ отменить первое нажатие левой кнопки мыши?

using Gma.System.MouseKeyHook;
using System;
using System.Windows.Forms;

namespace MouseRClick
{
class ClassRightClick
{
// API
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
public const int MOUSEEVENTF_LEFTDOWN = 0x02;
public const int MOUSEEVENTF_LEFTUP = 0x04;
public const int MOUSEEVENTF_RIGHTDOWN = 0x08;
public const int MOUSEEVENTF_RIGHTUP = 0x10;

// Hook module
private IKeyboardMouseEvents _hook;

private bool _rclick_activated = false;
private int _down_cursor_x;
private int _down_cursor_y;

private Timer timer;

public ClassRightClick(int delay)
{
timer = new Timer();
timer.Interval = delay;
timer.Tick += timer_Tick;
}

public void Subscribe()
{
_hook = Hook.GlobalEvents();

_hook.MouseDownExt += onMouseDown;
_hook.MouseUpExt += onMouseUp;
}

public void Unsubscribe()
{
_hook.MouseDownExt -= onMouseDown;
_hook.MouseUpExt -= onMouseUp;

//It is recommened to dispose it
_hook.Dispose();
}

private void onMouseDown(object sender, MouseEventExtArgs e)
{
if (e.Button == MouseButtons.Left)
{
_down_cursor_x = e.Location.X;
_down_cursor_y = e.Location.Y;

_rclick_activated = false;
timer.Enabled = true;
}
}

private void onMouseUp(object sender, MouseEventExtArgs e)
{
if (e.Button == MouseButtons.Left)
{
timer.Enabled = false;

Unsubscribe();

if (_rclick_activated)
{
mouse_event(MOUSEEVENTF_RIGHTDOWN, _down_cursor_x, _down_cursor_y, 0, 0);
mouse_event(MOUSEEVENTF_RIGHTUP, _down_cursor_x, _down_cursor_y, 0, 0);

e.Handled = true;
}

_rclick_activated = false;

Subscribe();
}
}

private void timer_Tick(object sender, EventArgs e)
{
_rclick_activated = true;
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/556 ... click-on-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»