如何向另一应用程序模拟键盘输入,如向QQ登录窗中输入内容

解决方案 »

  1.   

    keyevent
    mouseevent
    API
      

  2.   

    获得其窗口句柄...FindWindow
    获得控件句柄..向他发送消息postmessage
      

  3.   

      const int WM_COPYDATA = 0x004A;        [DllImport("User32.dll", EntryPoint = "SendMessage")]
            private static extern int SendMessage(
            IntPtr hWnd,   //   handle   to   destination   window   
            int Msg,   //   message   
            int wParam,   //   first   message   parameter   
            ref   COPYDATASTRUCT lParam   //   second   message   parameter   
            );        [DllImport("user32.dll")]
            private static extern int SendMessage(IntPtr hWnd, uint msg, int wParam, int lParam);        public struct COPYDATASTRUCT
            {
                public IntPtr dwData;
                public int cbData;
                [MarshalAs(UnmanagedType.LPStr)]
                public string lpData;
            }        [DllImport("user32.dll")]
            public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);        [DllImport("user32.dll")]
            public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
            public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
                const int WM_CHAR = 0x0102;
                IntPtr hwnd_win;
                IntPtr hwnd_textbox;            hwnd_win = FindWindow(null, "Form4");
                string pa = AppDomain.CurrentDomain.BaseDirectory;
                hwnd_textbox = FindWindowEx(hwnd_win, new IntPtr(0), null, "button2");
                const int BM_CLICK = 0x00F5;
                COPYDATASTRUCT cds;
                cds.dwData = (IntPtr)100;
                cds.lpData = "Test Message";
                cds.cbData = 14;            Message msg = Message.Create(hwnd_textbox, BM_CLICK, new IntPtr(0), new IntPtr(0));
                // PostMessage(msg.HWnd, msg.Msg, msg.WParam, msg.LParam);
                //SendMessage(hwnd_textbox, BM_CLICK, 0, ref cds);
                SendMessage(hwnd_win, WM_COPYDATA, 0, ref cds);
      

  4.   

    我想用C#写一个可以同时帮助您启动多个QQ帐号,而无须为每一个帐号输入密码进行登录   
        
        
      这样的QQ自动登录器是怎么写的呀?? 用什么方法或类。我用了process数的start 方法然后用
    SendKeys.Send  给有焦点的文本发送键盘消息 总是密码错误  请问怎样能获得  用户名  和密码框的焦点
    然后输入想 要的内容?