已找到一个对话框中的Edit控件的句柄,另一程序如何获取它上面的值???
使用::GetWindowText(hWnd_TEdit1,chars_TEdit1,256);不对。
我使用sky++也是这样,GetWindowText函数只是找到Edit的caption,但是Edit实时显示的内容不是caption?如何才能获得Edit控件上的显示内容。另一个程序已知道了这个程序中Edit控件的句柄
在线等待!!!

解决方案 »

  1.   

    补充:Edit显示的是字符串关注!!!
      

  2.   

    就是用GetWindowText, 只要HWND是正确的,就应该可以取到。
      

  3.   

    看msdn,GetWindowTezt不能获取别的进程的控件的text
    GetWindowText cannot retrieve the text of a control in another application直接用WM_GETTEXT
    例如
    char szBuf[256];
    int nRecvNum = SendMessage(hEditWnd, WM_GETTEXT, szBuf, 256);
    if (0 == nRecvNum)
       //获取失败
      

  4.   

    上面SendMessage的WPARAM和LPARAM写错了...
    刚测试了一吓,写了段代码,如下:
    // TODO: 在此添加控件通知处理程序代码
    HWND hWnd = (HWND)0x20326; //这个句柄是用spy++看的,具体你替换成你自己的句柄就可以了
    TCHAR szCaption[256];
    ZeroMemory(szCaption, 256);
    int k = ::SendMessage(hWnd, WM_GETTEXT, 256, (LPARAM)szCaption);
    ::MessageBox(NULL, szCaption, szCaption, 0);
      

  5.   

    如果是另一个进程的,可以用clipboard操作
    WM_COPYDATA
      

  6.   

    CString str;
    FromHandle(hWnd)->GetWindowText(str);
      

  7.   

    re:CrazyAzreal
    厉害,我回去试试
      

  8.   

    先 WM_GETTEXTLENGTH 后 WM_GETTEXT
    太简单了, SDK 的人都知道
      

  9.   

    CString szText = "";
    ::SendMessage(hResult, WM_GETTEXT, 0,(LPARAM)(LPCTSTR)szText);
    //hResult为你的Edit控件的句柄,语句执行后,szText为编辑框中的内容