private static void PerformMouseAction(int coord_x, int coord_y, int something, MouseInputFlags flags)
{
PermissionSet permissions = new PermissionSet(PermissionState.Unrestricted);
permissions.Demand();
int intflags = (int)flags;
if ((intflags & (int)MouseInputFlags.Absolute) != 0)
{
// Absolute position requires normalized coordinates.
NormalizeCoordinates(ref coord_x, ref coord_y);
intflags |= MouseeventfVirtualdesk;
}
INPUT mi = new INPUT();
mi.type = InputMouse;
mi.union.mouseInput.dx = coord_x;
mi.union.mouseInput.dy = coord_y;
mi.union.mouseInput.mouseData = something;
mi.union.mouseInput.dwFlags = intflags;
mi.union.mouseInput.time = 0;
mi.union.mouseInput.dwExtraInfo = new IntPtr(0);
if (SendInput(1, ref mi, Marshal.SizeOf(mi)) == 0)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
}