积极答复者
怎么将内容赋值到外部应用程序的文本框内?

问题
答案
-
先取到文本框的句柄.
然后用SendMessage发送WM_SETTEXT,带上要发送的文本
努力+方法=成功- 已标记为答案 KeFang Chen 2010年5月14日 5:32
-
这个情况有一点复杂。因为文本框没有 Caption,不能用 FindWindow 直接找。
我提供几种方法供你参考:
1、利用 MSAA 或者 Windows Automation API,用 Spy++ 找那个 TextBox 的 Autoamtion ID,找到了就好,用 QID + MSAA 去找控件就可以了。如果没有 Automation ID,那么请看第二种方法。
2、用 Spy++ 找那个 TextBox 控件的父控件,如果它有 Text,那就最好,找到其父控件的句柄后,用 EnumWindows 一个一个找,直到 WNDCLASS = "Edit";如果父控件还是没有 Text,继续找父控件的父控件。以此类推。不过这个方法有个问题,如果同一个父控件下有多个符合条件的 TextBox 的话,就很难分辨要哪一个 textBox 了。这种情况下,还需要利用其 TabOrder 加以辅助判断。这个问题是一个控件定位问题,俗称“抓控件”。是自动化测试工程师 (SDET) 必备技能。呵呵。
Mark Zhou- 已标记为答案 KeFang Chen 2010年5月14日 5:32
全部回复
-
先取到文本框的句柄.
然后用SendMessage发送WM_SETTEXT,带上要发送的文本
努力+方法=成功- 已标记为答案 KeFang Chen 2010年5月14日 5:32
-
这个情况有一点复杂。因为文本框没有 Caption,不能用 FindWindow 直接找。
我提供几种方法供你参考:
1、利用 MSAA 或者 Windows Automation API,用 Spy++ 找那个 TextBox 的 Autoamtion ID,找到了就好,用 QID + MSAA 去找控件就可以了。如果没有 Automation ID,那么请看第二种方法。
2、用 Spy++ 找那个 TextBox 控件的父控件,如果它有 Text,那就最好,找到其父控件的句柄后,用 EnumWindows 一个一个找,直到 WNDCLASS = "Edit";如果父控件还是没有 Text,继续找父控件的父控件。以此类推。不过这个方法有个问题,如果同一个父控件下有多个符合条件的 TextBox 的话,就很难分辨要哪一个 textBox 了。这种情况下,还需要利用其 TabOrder 加以辅助判断。这个问题是一个控件定位问题,俗称“抓控件”。是自动化测试工程师 (SDET) 必备技能。呵呵。
Mark Zhou- 已标记为答案 KeFang Chen 2010年5月14日 5:32