Перехват событий мыши на C#
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Перехват событий мыши на C# - 2010-04-23 21:39:12.670000
|
|
|
AndreyXYZ
Сообщений: 56
Оценки: 0
Присоединился: 2009-01-29 22:14:51.710000
|
Здравствуйте! Я пишу приложение на С#. Мне необходимо сохранять с файл моменты времени, когда производились события нажатия на левую и правую кнопку мыши (нажатия не обязательно на элементы моей формы), и координаты курсора мыши через определенные промежутки времени. Как это можно сделать? Можно ли обойтись без использования драйвера? С уважением, Андрей.
|
|
|
RE: Перехват событий мыши на C# - 2010-04-24 00:15:19.190000
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Ну что ж ты сразу за драйвер то)
public class Win32MessageFilter: System.Windows.Forms.IMessageFilter
{
public bool MessageFilter(ref Message msg)
{
if (msg.Msg==513) //левая мыши
{
MessageBox.Show("PROFIT");
return true;
}
return false;
}
}
--------------------
static Win32MessageFilter my_filter_class= new Win32MessageFilter();
-------------------
Application.AddMessageFilter(my_filter_class);
Вообще почти всё из Win32 доступно в .NET так или иначе,кажись. Код распихать в нужные места, там где 513 должен быть ID нужного системного сообщения. msg.LParam и msg.WParam аналогичны обычным.
|
|
|
RE: Перехват событий мыши на C# - 2010-05-06 02:10:44.553333
|
|
|
AndreyXYZ
Сообщений: 56
Оценки: 0
Присоединился: 2009-01-29 22:14:51.710000
|
На строке public class Win32MessageFilter : System.Windows.Forms.IMessageFilter при компиляции возникает ошибка Error 1 'Authentification.Win32MessageFilter' does not implement interface member 'System.Windows.Forms.IMessageFilter.PreFilterMessage(ref System.Windows.Forms.Message)'
|
|
|
RE: Перехват событий мыши на C# - 2010-05-06 23:40:58.176666
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Эхх). Вот,тупо спастил MSDN:
// Creates a message filter.
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public class TestMessageFilter : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
// Blocks all the messages relating to the left mouse button.
if (m.Msg >= 513 && m.Msg <= 515)
{
Console.WriteLine("Processing the messages : " + m.Msg);
return true;
}
return false;
}
}
Пробуй.
|
|
|
RE: Перехват событий мыши на C# - 2010-05-09 23:13:45.220000
|
|
|
AndreyXYZ
Сообщений: 56
Оценки: 0
Присоединился: 2009-01-29 22:14:51.710000
|
Теперь заработало. Но это не то, что мне было нужно. Сообщения перехватываются только в том случае, если я кликаю на форме. Как сделать, чтобы события мыши перехватывались когда я кликаю, например, на рабочем столе или в любом другом месте, не имеющем отношения к моей форме на C#?
|
|
|
RE: Перехват событий мыши на C# - 2010-05-10 02:04:00.356666
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Oy vey. Use Brain,Luke, - not Force. Чтобы опять небыло проблем с мелочами,отвечу "посылами": раз , два , три , четыре База ведь, поискал бы,чтоли. //Там не именно твоё, разберешься?
|
|
|
|
|