我知道一个FORM的句柄,但是里面一个RICHEDIT控件的“标题文本”(通过SPY++查找所得)不断变化,“标题文本”内容是提示输入的几行提示信息,且中间有回车,如何获取其句柄?大家能否给点提示。谢谢
举个例子:文本内容:“PLEASE ENTER YOUR ID,
回车
回车(两个)
MUST BE 12 CHARACTERS:
回车
IF YOU HAVE ANY QUESTION..."这个内容是固定的,输入12个字符以后就会变成下个完全不同的提示信息》

解决方案 »

  1.   

    直接用findwindow findwindowex查找即可,可以指定类名查找
      

  2.   

    可能我没说清楚,我的本意是想获取:MUST BE 12 CHARACTERS:输入的12个字符做记录\判断并结合编辑窗口(sendkeys发送相关信息到到编辑窗口)做相应处理,窗口和编辑窗口句柄我是可以获取的,但是里面的文字不知道如何获取,getwindowtext不可以获取另一应用程序的编辑窗口文字,而且我的这个编辑窗口每一行之间还有若干行空行.
      

  3.   

    用sendmessage发送wm_gettext试试另外,你的编辑窗口的classname是什么
      

  4.   

    非常感谢楼上,今天下午太忙,下班前关注一下.1/窗口类名:RICHEDIT2/标题文本,如上所示是不断变化的:
     “PLEASE ENTER YOUR ID,
      回车
      回车(两个)
      MUST BE 12 CHARACTERS:
      回车
      IF YOU HAVE ANY QUESTION..."
    3/类样式值:16520
      类样式:
         CS_DBLCKS
         CS_GLOBALCLASS
         CS_PARENTDC如有必要,请留邮箱,我将相关SPY++图片发过去,另外再给追加分.
      

  5.   

    你先参考一下这个:
    http://topic.csdn.net/t/20051119/20/4405082.html
      

  6.   

    你先参考一下这个:
    http://topic.csdn.net/t/20051119/20/4405082.html谢谢楼上的强力关注,所提供的贴子确实不错,不过昨晚刚发现通过鼠标取词的方法对我更简单,楼上的分数绝对不会少给的.但是现在我发现取得当前窗口(RICHEDIT)的句柄比较麻烦,我搞不定,是一个四级的子窗口,其父窗口类名是:static   标题:vbnullstring ,且句柄Hwnd已获得.但是当前窗口(RICHEDIT)句柄tHwnd没办法获取,不知到大家有什么更好的方法:昨晚我想过两种思路,但是返回都是零,郁闷中
    1/ tHwnd=findwindowex(Hwnd,&0,"static",str)     str是RICHEDIT标题,标题不断变化,且如上所述,有回车换行.2/ 获取光标当前所在位置的窗口句柄,也就是RICHEDIT句柄,可能我不会用,用GetCarePOS,ClienttoScreen,WindowFromPoint三个API返回也是零郁闷中,请高手给予赐教!
      

  7.   

    用findwindowex的话,必须一层层的查找
      

  8.   

    我就是一层层的查找下来的!到最后一层我需要的那层(RICHEDIT句柄)卡住了,返回0,
    上面的每一层句柄都找到的,而且我调试过了!
      

  9.   

    具体程序如下: 
    dim ss as string 
    ss="
    回车换行
    PLEASE ENTER YOUR ID,
    回车换行 
    回车换行
      MUST BE 12 CHARACTERS:
    回车换行 
      IF YOU HAVE ANY QUESTION..."  'aHwnd = GetForegroundWindow ' hwnd is the handle to the foreground window
    ' Debug.Print dHwnd
       
    aHwnd = FindWindow("GR_Execution_Class", "228X Production -C:\user\10040.obc - Runtime System")
      Debug.Print aHwnd
    if aHwnd>0 then
      bHwnd = FindWindowEx(aHwnd, ByVal 0&, "#32770", "Template 2")
      Debug.Print bHwnd
    end if
    if bHwnd then
      cHwnd = FindWindowEx(bHwnd, ByVal 0&, "static", vbNullString)
      Debug.Print cHwnd
    end if
      If cHwnd <> 0 Then
      dHwnd = FindWindowEx(cHwnd, ByVal 0&, "RICHEDIT",ss)
      debug.print dHwnd
    end ifdHwnd 返回0
      

  10.   

    由于上面SS字符太多,不好定义,所以不好查找,找过资料了也没好的办法解决.
    所以想过用获取光标所在的位置句柄,但是没成功,不知道知道其父窗口句柄cHwnd及自身窗口类名"RICHEDIT",,是否有什么好的API可以获取其窗口句柄dHwnd?