Сабж.
Под руками имеется глобальный хук, позволяющий произвести необходимые манипуляции при нажатии клавиши мыши.
Моя задача умещается в следующее предложение:
"Когда клавиша мыши нажата выполнить необходимые действия, после отменить нажатие клавиши мыши"
Глобально отследить нажатие и делать действия получается, а вот отменить нажатие я не смог.
Вычитал, что для этого необходимо принимать сообщения через GetMessage или PeekMessage, а после этого обнулять сообщение.
Но видимо моих мозгов не хватает для того чтобы это реализовать.
Я подключаю функцию вот так:
[StructLayout(LayoutKind.Sequential)]
public struct NativeMessage
{
public IntPtr handle;
public uint msg;
public IntPtr wParam;
public IntPtr lParam;
public uint time;
public Point p;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct POINT
{
public int X;
public int Y;
}
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool PeekMessage(ref NativeMessage lpMsg, HandleRef hWnd, uint wMsgFilterMin, uint wMsgFilterMax, uint wRemoveMsg);
И после в том коде где обрабатывал "нужные при клике действия" ниже дописывал:
var msg = new APIDll.NativeMessage();
GCHandle handle = GCHandle.Alloc(msg);
foundMessage = APIDll.PeekMessage(ref msg, new HandleRef(Form1.Main,Form1.Main.Handle), 0, 0, 0);
msg.msg = 0;
handle.Free();
так же пробовал использовать заместо HandleRef тип IntPtr. Пробовал закидывать на это место параметр из глобального хука мыши lParam.
Но результата не произошло. ПРОШУ ПОМОГИТЕ С ЯВНЫМ ПРИМЕРОМ. Без посыланий в гугл, в поиск и фраз аля "используй функцию ляляля". Я хочу спросить не только название функции, но и что в нее вводить, откуда брать эти значения для функции. И куда ее вводить если это принципиально.
BlockInput не предлагать! Нужна блокировка именно путем отсева сообщений.
ЕСЛИ КТО ТО СМОЖЕТ НАПИСАТЬ ПРИМЕР НА СИ ШАРПЕ БУДЕТ ПРОСТО НЯШКА
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.