C# 怎样模拟windows消息,发送鼠标键盘事件给windows,让其触发相应操作,请路过的大侠给几个例子,代码参考最好是由浅入深。麻烦了!

解决方案 »

  1.   

    API:
    Keyboard_Event[DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]
    private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);private void button1_Click( object sender, EventArgs e )
    {
    const byte VK_F1 = 0x70;
    const int KEYEVENTF_KEYUP = 0x02;
    keybd_event(VK_F1, 0, 0, 0);
    keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0);
    } SendKeys.Send
    http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send.aspx
      

  2.   

    比如在wince系统里面,进入远程计算机界面,需要我点击本地相关的程序,添上相关的密码,用户名,在确定才能登录上去,如果我能写个程序开机启动,模拟windows消息,模拟这个过程就不要人工去控制,这个过程怎么实现,能给个具体的事例给我参考吗,wince下能支持吗?
      

  3.   

    大哥每次都是你,呵呵,谢谢。
    但我用的mouse_event
      

  4.   

    引用 1 楼 wuyazhe 的回复:
    API:
    Keyboard_EventC# code[DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]
    private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraIn……
    大哥每次都是你,呵呵,谢谢。
    但我用的mouse_event
    他回答了很多啊,特别感谢,呵呵,有人回复吗
      

  5.   

    wince支持的。dll入口地址吧user32.dll修改为coredll.dll就可以了。
    [DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError = true)]
    private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
    ce/mobile支持的。
      

  6.   

    我弄混淆了。
    SendInput
    用这个,鼠标键盘的都可以模拟。kb_event只能模拟键盘。
      

  7.   

    能用这个方法给我看个例子吗?比如说两个form1,from2,通过form1去控制form2的移动,点击,关闭,即在form2的控件是显示信息等,麻烦了,
    刚接触像这个的方法,还不太会用,
    [DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError = true)]
    private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
    麻烦给几个小例子,贴点代码
      

  8.   

    [DllImport("user32.dll")]
    static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,UIntPtr dwExtraInfo);  private void button1_Click(object sender, EventArgs e)
    {
        this.textBox1.Focus();
        const int KEYEVENTF_EXTENDEDKEY = 0x1;
        const int KEYEVENTF_KEYUP = 0x2;
        keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
        keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,(UIntPtr)0);}   窗体间操作使用委托
      

  9.   

    我是初学者,这个方法keybd_event的几个参数,我没搞明白 0x14, 0x45这是固定了吗,怎么能过灵活应用像调dll里面的方法,怎么去带参,是什么功能,像什么句柄啊,我也没怎么用过,我都不太了解,所以不能很好的应用dll里面的东西,能解释下吗?让我入门啊,给点资料我自己看看也行。
      

  10.   


            [DllImport("user32.dll")]
            static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, UIntPtr dwExtraInfo);
            [Flags]
            public enum MouseEventFlags
            {
                LEFTDOWN = 0x00000002,
                LEFTUP = 0x00000004,
                MIDDLEDOWN = 0x00000020,
                MIDDLEUP = 0x00000040,
                MOVE = 0x00000001,
                ABSOLUTE = 0x00008000,
                RIGHTDOWN = 0x00000008,
                RIGHTUP = 0x00000010
            }
      

  11.   

    API具体怎么用希望你查MSDN,那里面说的最清楚!还有代码示例。
      

  12.   

    sendinput是全局
    sendmessage可针对某一窗口