none
怎么将内容赋值到外部应用程序的文本框内? RRS feed

  • 问题

  • 外部程序有两个文本框  spy++ 获取两个文本框的handle 和class 值 无caption值

    想把程序中的结果值 分别赋值到两个文本框

    有什么办法吗?

    2010年5月9日 9:45

答案

  • 先取到文本框的句柄.

    然后用SendMessage发送WM_SETTEXT,带上要发送的文本

     


    努力+方法=成功
    2010年5月10日 2:01
  • 这个情况有一点复杂。因为文本框没有 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
    2010年5月10日 7:37

全部回复

  • 先取到文本框的句柄.

    然后用SendMessage发送WM_SETTEXT,带上要发送的文本

     


    努力+方法=成功
    2010年5月10日 2:01
  • 这个情况有一点复杂。因为文本框没有 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
    2010年5月10日 7:37