我调用了个别人写好的控件,会弹出个窗体,在窗体中进行选择,然后点击按钮,接收到返回值.问题是,我现在不想去人工点击按钮,有没有程序能获取到这个弹出的窗体,然后自动点击按钮?!

解决方案 »

  1.   

    这个要求有点像做外挂了,FindWidow找到这个窗体中的按钮句柄,SendMessage发送点击事件消息
      

  2.   

    api的函数,findwindow,findwindowex等,但是你要知道他的返回值是否和点击有关系,这影响到你是否可以正确取得返回值
      

  3.   

    高手,你说的SendMessage发送点击事件消息,这步怎么操作阿?没写过,求指点
      

  4.   

            button1_Click(button1,new EventArgs());
            private void button1_Click(object sender, EventArgs e)
            {
                    MessageBox.Show("请输入用户名和密码!");
            }你是不是想直接执行,不用点击,直接执行事件
      

  5.   

            
     const int WM_Conn = 0x044A;
    这个是发送事件
    PostMessage(wWinPtr, WM_Conn, IntPtr.Zero, dataPtr);
     wWinPtr是你找到的窗口指针,WM_Conn你发送的lParam,或者叫消息码,dataPtr就是你发送的数据,可以将一个int类型直接转为(IntPtr)dataPtr
    这个是接收事件:写在窗体里的 
           protected override void DefWndProc(ref Message m)
            {
                switch (m.Msg)
                { 
                    case WM_Conn:
                     //处理你要做的事情
                     break;
                    default:
                     break;
                 }
            }
      

  6.   

      查找窗口句柄函数,即wWinPtr
      命名空间 using System.Runtime.InteropServices;  
     导入库 [DllImport("user32.dll")]  
     函数原型 public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);  
     参数说明 lpClassName String,窗口类名   lpWindowName String,窗口标题名称
      

  7.   

    哎呦 如果弹出窗体 那个按钮获得焦点的话 那简单点sendkeys.Send(“{ENTER}”) 模拟一个回车按键过去
    如果 不是这样的话  那么 findwindow sendMessage吧、、、