自己做了一个查看窗口和控件句柄的小程序,但是在word2003里的打印窗口中,无法显示出“确定”按钮(以及其他按钮如“取消”)的控件句柄,同理,excel2003也是一样;但是在在pdf和txt文档里就没有这种问题。请问这是为什么?
部分代码如下:        public void LBTDown(Point curPoint)
        {
            //根据当前鼠标位置确定父窗口句柄
            IntPtr CurPtHwnd = WindowFromPoint(curPoint);
            //将窗口或控件的txt内容取出放在s中
            StringBuilder s = new StringBuilder(512);
            int strLen = GetWindowText(CurPtHwnd, s, s.Capacity);            //将s和窗口(控件)句柄显示出来
            if (strLen >= 0)
            {
                this.MouseStructInfoText.Text = "当前鼠标所指位置的文本内容为:\r\n" + s.ToString();
                this.MouseStructInfoText.Text += "\r\n当前鼠标所指位置的控件句柄为" + CurPtHwnd.ToInt32();
            }
            else {
                MessageBox.Show("获取当前鼠标所指控件的文本内容时失败");
            }
        }钩子程序句柄控件内容打印框

解决方案 »

  1.   

    因为按钮不在那个坐标上
    不要用WindowFromPoint取,
    用FindWindow/FindWindowEx取。
      

  2.   

    试过了,还是一样,也找不到确定按钮。这会不会是因为windows把整个打印框作为一个控件来使用了,所以会这样?
      

  3.   

    用SPY++看下层次关系、窗口标题和类名。
      

  4.   

    用了spy++,但还是找不到确定按钮的句柄,如图: