目的:取得CFE程序子窗体的内容用spy++观察名为CFE的程序,发现父子关系CFEClass-> MDICLient-> AfxFrameOrView42
但是我这样仍然拿不到文本内容
请问错在哪里?ParentHandle = FindWindow("CFEClass", "CFE")
ParentHandle = FindWindowEx(ParentHandle, 0&, "MDIClient", vbNullString)
ParentHandle = FindWindowEx(ParentHandle, 0&, "AfxFrameOrView42", "SESSION 1")
Handle = FindWindowEx(ParentHandle, 0&, "AfxFrameOrView42", vbNullString)
strText = Space(255)
SendMessage ParentHandle, WM_GETTEXT, 0, ByVal strText 
MsgBox strText

解决方案 »

  1.   

    最后一句编辑错误
    SendMessage Handle, WM_GETTEXT, 0, ByVal strText
      

  2.   

    SendMessage ParentHandle, WM_GETTEXT, Len(strText), ByVal strText 
    or
    GetWindowText ParentHandle, strText, Len(strText)
      

  3.   

    ParentHandle = FindWindowEx(ParentHandle, 0&, "AfxFrameOrView42", "SESSION 1")
    Handle = FindWindowEx(ParentHandle, 0&, "AfxFrameOrView42", vbNullString)

    如果SendMessage ParentHandle, WM_GETTEXT, 0, ByVal strText 就可以取出子窗体的标题
    但是SendMessage Handle, WM_GETTEXT, 0, ByVal strText 就什么都取不出来,是不是是AfxFrameOrView42的问题?
      

  4.   

    在更正
    用spy++观察名为CFE的程序,发现父子关系
    CFEClass-> MDICLient-> AfxFrameOrView42(有标题)-> AfxFrameOrView42(无标题)
    这个时候对最后一个AfxFrameOrView42进行WM_SETTEXT发现标题由原来的""变为SET的内容,但是并没有反映到窗体上,而这个时候GETTEXT时得到的是刚才SET的内容,这又是为什么呢?
      

  5.   

    在win2000,winxp下,对其它进程发送WM_GETTEXT是无法获取文本框中的内容的!微软对此消息进行了必要的防范!
      

  6.   

    to zdcwin(赵大成)
    首先wm_gettext是可以得到内容的,但是得到的是caption内容
    另外看起来这个不是edit或者richedit,好像是view,而这方面我知道得不多,再做些试验