Глобально отследить нажатие кнопок мыши c#
В программе нужно отловить нажатие кнопки мыши, чтобы сделать действие.
[DllImport("user32.dll")]
public static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey);
private void timer1_Tick(object sender, EventArgs e)
{
if (isLButtonDown())
{
MessageBox.Show("Кнопка нажата!");
}
}
bool isLButtonDown()
{
Int16 state = GetAsyncKeyState(Keys.LButton);
return (state & 0x8000) != 0;
}
Что удалось найти, но срабатывает через раз.
Ответы (2 шт):
Автор решения: Neomaster
→ Ссылка
Каждый объект на форме, кроме вашего TextBox, и саму форму кликнуть ЛКМ. Затем в окне Properties выберете вкладку Events со значком молния, там вы найдете события, связанные с мышью, кликните 2 раза и создастся обработчик.
Автор решения: S.A.V.
→ Ссылка
[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Int32 vKey);
...
private void TextBoxTimer_Tick(object sender, EventArgs e)
{
if ((GetAsyncKeyState(1) != 0) || (GetAsyncKeyState(2) != 0) || (GetAsyncKeyState(4) != 0))
{
if (!Tb.ClientRectangle.Contains(Tb.PointToClient(MousePosition))) FromTextBoxToLabel(Tb.Text);
}
}
На таймер вешаем обработку если нажата ЛКМ (1) или ПКМ (2) или средняя (4), то что-то происходит нужное нам. Работает.

