c#でマウスボタンをクリックするメッセージを他のアプリケーションに送る方法

http://w.livedoor.jp/jun_c/d/%A5%DE%A5%A6%A5%B9%BA%B8%A5%DC%A5%BF%A5%F3%A5%AF%A5%EA%A5%C3%A5%AF
PostMessage/SendMessageでWM_LBUTTONDOWN、WM_LBUTTONUPを送る方法もあるが、SendInputを利用したほうが楽っぽい。

[DllImport("user32.dll")]
extern static uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize);

[StructLayout(LayoutKind.Sequential)]
struct INPUT
{
    public int type;
    public MOUSEINPUT mi;
}

[StructLayout(LayoutKind.Sequential)]
struct MOUSEINPUT
{
    public int dx;
    public int dy;
    public int mouseData;
    public int dwFlags;
    public int time;
    public IntPtr dwExtraInfo;
}

const int MOUSEEVENTF_LEFTDOWN = 0x0002;  // 左ボタン Down
const int MOUSEEVENTF_LEFTUP = 0x0004;  // 左ボタン Up

private void click()
{
    //struct 配列の宣言
    INPUT[] input = new INPUT[2];
    //左ボタン Down
    input[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
    //左ボタン Up
    input[1].mi.dwFlags = MOUSEEVENTF_LEFTUP;
    //イベントの一括生成
    SendInput(2, input, Marshal.SizeOf(input[0]));
}

ちにみにマウスカーソルを動かす方法はこちら。
http://dobon.net/vb/dotnet/system/cursorposition.html

System.Drawing.Point p = new System.Drawing.Point(0, 0);
System.Windows.Forms.Cursor.Position = p;