I couldn't find any samples (of course after only searching breifly) that show how to call SendInput from C# using the MOUSEINPUT struct.  After getting it to work I figured I'd post it so other folks can make use of it:


       [DllImport("User32.dll", SetLastError=true)]

       public static extern int SendInput(int nInputs, ref INPUT pInputs, int cbSize);


       public struct INPUT


              public int type;

              public MOUSEINPUT mi;



       public struct MOUSEINPUT


              public int dx;

              public int dy;

              public int mouseData;

              public int dwFlags;

              public int time;

              public int dwExtraInfo;


       // Call the API

       int resSendInput;

       resSendInput = SendInput(1, ref input, Marshal.SizeOf(input));

       if (resSendInput == 0 || Marshal.GetLastWin32Error() != 0)