在做程序的时候 难免需要去通过窗体的句柄去发送按键  模拟鼠标点击的动作,这里分享个方法,不会影响其他的操作哟,尤其是鼠标点击的时候,发现很多朋友都是将鼠标移动过去操作完之后再移动到原来的位置,这样就造成鼠标不停的在闪烁,来看代码,利用API实现

[DllImport("User32.dll", EntryPoint = "FindWindow")]             
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);             
                           
[DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Auto)]  //发送消息             
private static extern int SendMessage(IntPtr hwnd, uint wMsg, int wParam, int lParam);             
                           
[DllImport("user32.dll", CharSet = CharSet.Auto)]             
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

发送键盘按键 (方向键左键,分按下和松开)

SendMessage(hWnd, 256, (IntPtr)37, IntPtr.Zero);//Left           
Thread.Sleep(10);           
SendMessage(hWnd, 257, (IntPtr)37, IntPtr.Zero);

发送鼠标左键点击,同样分按下和松开

public void SendMsg(IntPtr hWnd, int x, int y)       
{       
    ///发送左键单击消息       
    SendMessage(hWnd, 0x0201, (IntPtr)1, (IntPtr)(y * 65536 + x));       
    Thread.Sleep(300);       
    SendMessage(hWnd, 0x0202, (IntPtr)1, (IntPtr)(y * 65536 + x));       
}

以上代码中用到的句柄都可以通过FindWindow获得 如:

IntPtr hWnd=FindWindow(null,"新建文本文档.txt - 记事本");