已经获取到另一个程序的窗体句柄,怎样才能适时监控上面的文本框的Text值是否改变了呢?
并怎样获取改变的Text值?

解决方案 »

  1.   

    //HWND hWnd = ::FindWindow(NULL,L"Window Name");
    //CWnd *pWnd = CWnd::FromHandle(hWnd);
    CString str;
    pWnd->GetWindowText(str);//得到了
    pWnd->SetWindowText(L"Text");//进行设置
      

  2.   

    能否给个代码参考一下,谢谢1楼的只是获取窗体句柄并改变窗体的标题,我要获取窗体上某个文本框的Text值
      

  3.   

    GetWindow(GW_HWNDNEXT),遍历窗体控件
    或EnumChildWindows遍历子窗体
      

  4.   


    假如控件ID为IDC_TXT_EDIT
    Cstring csTemp;
    pWnd->GetDlgItemText(IDC_TXT_EDIT,csTemp);//得到了 
    pWnd->SetDlgItemText(IDC_TXT_EDIT,csTemp);//进行设置
      

  5.   


    其他程序不能使用这个方法。
    利用你得到的窗口句柄,枚举子窗口,获得文本框控件的句柄,发送WM_GETTEXT消息获得文本框中的内容。
      

  6.   

    先用SPY++查出文本框的ID,用GetDlgItem可以获取文本框的句柄。如果要获取文字,可以用SendMessage发WM_GETTEXT消息。如果要实时监控其变化,需要写一个DLL,用SetWindowsHookEx安装WH_CALLWNDPROC类型的钩子,根据句柄确定控件,如果消息是WM_SETTEXT,则说明要修改文字。
      

  7.   

    谢谢各位指点,我现在已经获取到这个窗口的那个文本框句柄了,怎么获取和设置这个文本的Text值呢?
    貌似用pWnd->GetWindowText(str);获取不到Text值,pWnd->GetWindowText(str);只能获取按钮的Text值,Edit文本框获取不到
      

  8.   

    前面已经说了,用SendMessage发消息,获取是WM_GETTEXT,设置是WM_SETTEXT。
      

  9.   

    TCHAR str[100];
    SendMessage(hwndedit,WM_GETTEXT,(WPARAM)100,(LPARAM)str);