Пример #1
0
 public Stroke Read()
 {
     MOUSE_INPUT_DATA outBuffer = new MOUSE_INPUT_DATA();
     uint bytesReturned = 0;
     uint outBufferSize = (uint)Marshal.SizeOf(typeof(MOUSE_INPUT_DATA));
     RawRead(base.device, 0x222100, IntPtr.Zero, 0, out outBuffer, outBufferSize, out bytesReturned, IntPtr.Zero);
     if (bytesReturned > 0)
     {
         Stroke stroke = new Stroke();
         stroke.flags = (Flags)outBuffer.Flags;
         stroke.state = (States)outBuffer.ButtonFlags;
         stroke.rolling = outBuffer.ButtonData;
         stroke.x = outBuffer.LastX;
         stroke.y = outBuffer.LastY;
         stroke.information = outBuffer.ExtraInformation;
         return stroke;
     }
     return null;
 }
Пример #2
0
 public uint Read(Stroke[] strokes, int number)
 {
     if ((number == 0) || (strokes.Length < number))
     {
         return 0;
     }
     MOUSE_INPUT_DATA[] outBuffer = new MOUSE_INPUT_DATA[number];
     uint bytesReturned = 0;
     uint num2 = (uint)Marshal.SizeOf(typeof(MOUSE_INPUT_DATA));
     RawRead(base.device, 0x222100, IntPtr.Zero, 0, outBuffer, (uint)(number * num2), out bytesReturned, IntPtr.Zero);
     bytesReturned /= num2;
     for (int i = 0; i < bytesReturned; i++)
     {
         strokes[i].flags = (Flags)outBuffer[i].Flags;
         strokes[i].state = (States)outBuffer[i].ButtonFlags;
         strokes[i].rolling = outBuffer[i].ButtonData;
         strokes[i].x = outBuffer[i].LastX;
         strokes[i].y = outBuffer[i].LastY;
         strokes[i].information = outBuffer[i].ExtraInformation;
     }
     return bytesReturned;
 }
Пример #3
0
 public uint Write(Stroke[] strokes, int number)
 {
     if ((number == 0) || (strokes.Length < number))
     {
         return 0;
     }
     MOUSE_INPUT_DATA[] inBuffer = new MOUSE_INPUT_DATA[number];
     uint bytesReturned = 0;
     uint num2 = (uint)Marshal.SizeOf(typeof(MOUSE_INPUT_DATA));
     for (int i = 0; i < number; i++)
     {
         inBuffer[i].UnitId = 0;
         inBuffer[i].Flags = (ushort)strokes[i].flags;
         inBuffer[i].ButtonFlags = (ushort)strokes[i].state;
         inBuffer[i].ButtonData = strokes[i].rolling;
         inBuffer[i].RawButtons = 0;
         inBuffer[i].LastX = strokes[i].x;
         inBuffer[i].LastY = strokes[i].y;
         inBuffer[i].ExtraInformation = strokes[i].information;
     }
     RawWrite(base.device, 0x222080, inBuffer, (uint)(number * num2), IntPtr.Zero, 0, out bytesReturned, IntPtr.Zero);
     return (bytesReturned / num2);
 }
Пример #4
0
 private static extern bool RawWrite(SafeFileHandle Device, uint IoControlCode, ref MOUSE_INPUT_DATA InBuffer, uint InBufferSize, IntPtr OutBuffer, uint OutBufferSize, out uint BytesReturned, IntPtr Overlapped);
Пример #5
0
 public bool Write(Stroke stroke)
 {
     MOUSE_INPUT_DATA inBuffer = new MOUSE_INPUT_DATA();
     uint bytesReturned = 0;
     uint inBufferSize = (uint)Marshal.SizeOf(typeof(MOUSE_INPUT_DATA));
     inBuffer.UnitId = 0;
     inBuffer.Flags = (ushort)stroke.flags;
     inBuffer.ButtonFlags = (ushort)stroke.state;
     inBuffer.ButtonData = stroke.rolling;
     inBuffer.RawButtons = 0;
     inBuffer.LastX = stroke.x;
     inBuffer.LastY = stroke.y;
     inBuffer.ExtraInformation = stroke.information;
     RawWrite(base.device, 0x222080, ref inBuffer, inBufferSize, IntPtr.Zero, 0, out bytesReturned, IntPtr.Zero);
     return (bytesReturned > 0);
 }