我有一个程序,实时从网络中接收信息,并在一个滚动的文本编辑框中显示。我想编写一个钩子程序,获得该文本编辑框中显示的内容。请问:使用什么类型的钩子?
如何编写该钩子函数?

解决方案 »

  1.   

    如果不需要实时性,每隔一段时间GetWindowText即可
    如果需要实时性,可以在目标进程里插入一个线程,在线程里把edit的窗口过程函数给改了,这样每次edit被设值都会被记录下来,再传给原程序即可
      

  2.   

    得到对话框或者主框架窗口句柄然后进一步得到Edit控件句柄呀!
    然后就可以操作了.
      

  3.   

    你需要先得到视的句柄
    然后发送WM_GETTEXT消息
      

  4.   

    我试了,不行。
    用的鼠标hook。 MOUSEHOOKSTRUCT* p = (MOUSEHOOKSTRUCT*)lParam;
    HWND hwnd1  = p->hwnd;
         SendMessage(hwnd1, WM_GETTEXT, 256, (LPARAM)psw);
      

  5.   

    那用什么能取得?
    主要原因是那个东西是一个视图。
    我想先把视图中的东西copy到剪切板中,然后从剪切板中copy出来。并向视图发送全选,和复制消息,居然也不行。
      

  6.   

    简单,作成全局HOOK DLL。参考 取WINDOWS 2000 ****密码的原理即可参考: http://www.vccode.com/file_show.php?id=2697
      

  7.   

    用先得到该窗口句柄,然后用EnumChildWindow枚举每个控件,判断到是该文本框的时候,用GetWindowText来取得文本。
      

  8.   

    何必那么复杂呢?
    用OnTimer()就可以了。
      

  9.   

    使用WH_CALLWNDPROCRET钩子
    LRESULT CALLBACK  CallWndRetProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
    if( ((CWPRETSTRUCT*)lParam)->message == WM_GETTEXT &&
    (::GetWindowLong(((CWPRETSTRUCT*)lParam)->hwnd,GWL_STYLE)) ) 
    {
    CString str;
    str = (LPCTSTR)(((CWPRETSTRUCT*)lParam)->lParam) ;//这就是你要的编辑框的文本

    } return CallNextHookEx(hRetWndHook,nCode,wParam,lParam);
    }