日期:2014-05-18  浏览次数:22146 次

在使用findwindowEX中如何区分多个类名及窗口标题都相同的文本框
在不同应用程序的通迅中要用到findwindowEX,通过SPY++发现每个文本框的的类名及窗口标题都相同,怎样才能取得每个文本框的句柄
appWnd_edit = FindWindowEx(appWnd,new IntPtr(0),"Edit","");
另外SPY++中发现有些文本框的标题是一串数值,把它作为第四个参数就无法找到控件,不知为什么,
如果应用程序是C#做的,第四个参数可以用控件名称,如"textBox1",但中SPY++中没有找不到,怎么办?

------解决方案--------------------
首先可以根据该控件的父子关系一层层自上往下找,另外可以配合该控件在其父窗体的Location来区分。
------解决方案--------------------
引用楼主 zhlhyy 的帖子:
怎样才能取得每个文本框的句柄

------解决方案--------------------
C# code

            //循環取得窗體中某控件所有的Handle
            IntPtr p = IntPtr.Zero ;
            do
            {
                p = FindWindowEx(this.Handle, p, "控件的類名", null);
                if (!p.Equals(IntPtr.Zero))
                    label1.Text = label1.Text + p.ToString() + Environment.NewLine;
            } while (!p.Equals(IntPtr.Zero));