比如net send 接收到的信息,怎样得到它的文本?

解决方案 »

  1.   

    Net Send后接收到的信息应是个用MessageBox显示出来的对话框吧。
      

  2.   

    这应该没办法了别人程序里LABEL里的文字,好象很难哦!帮你顶,让高手来答
      

  3.   

    用WIN32 API吧,有函数可查得窗口的handle.再用handle 做吧.好象与查*内容一样!
      

  4.   

    获取net send接收到的文本,我已解决
    关键在于net send信使服务对话框可以复制所以我只要EnumWindows,找到“信使服务”窗体,然后SendMessage(hWnd, WM_COPY, 0, 0),最后自己解析剪贴板中的文本就可以了而且在窗体中有句柄的控件也是可以得到文本的,但是,普通对话框中的Label我就不会取了。等待一周,没人解决就颁发参与奖
      

  5.   

    从根本上说,它是系统调用TextOutA(W)或ExtTextOutA(W)输出的用APIHook, 截获它的TextOut输出, 就可以了,很容易的
    ---------------------------------------------------------
    风过西窗客渡舟船无觅处
    年年一川新草遥看却似旧
      

  6.   

    给你一段C的代码,希望对你有启发:
    #define ZOU_PROCESS_ERROR(condition)           
    if(!(condition))   
        goto Exit0;   //错误处理宏定义
    int CGetWindowInfo::GetRealWindow(HWND *phWnd, POINT ptPoint)
    {
           int nResult = false;
           int nRetCode = false;
           HWND hWndTop = NULL;
           HWND hWndChild = NULL; 
           POINT ptCooChild = {0};
           LONG lWindowStyle = 0;
           //先得到ptPoint指向的(子)窗口
           hWndTop = ::WindowFromPoint(ptPoint);          
           ZOU_PROCESS_ERROR(hWndTop);
           ptCooChild = ptPoint;
           lWindowStyle = GetWindowLong(hWndTop, GWL_STYLE);           
          //通过这个判断找到最上层的父窗口(也就是上面图片中“QQ设置”的主窗口)
           if( !GetParent(hWndTop) || 
                GetDesktopWindow() == GetParent(hWndTop) ||
                !(lWindowStyle & WS_CHILDWINDOW))
           {
                  *phWnd = hWndTop;
           }
           else
           {
                  *phWnd = GetParent(hWndTop);
           }
           // 转换相对坐标
           ::ScreenToClient(*phWnd, &ptCooChild);           
           //从父窗口一层一层往下查找子窗口,直到找到最底层的子窗口
           while (TRUE){
                  hWndChild = RealChildWindowFromPoint(*phWnd, ptCooChild);
                  if (hWndChild && (hWndChild != *phWnd))
                         *phWnd = hWndChild;
                  else
                         break;
           }
           nResult = true;
    Exit0:
           return nResult;
    }补充:
    1、这是一个类SPY++的写法。LABEL也是窗体的一种,即程序中认为的子窗体。
    2、最好用枚举系统任务的方法,别用FINDWINDOW。另我在申请版主,希望多多支持。到下面这个网址支持我:
    http://expert.csdn.net/Expert/topic/1893/1893700.xml?temp=.8558466
      

  7.   

    hilove(小枫):
      你的代码很有用,但是Label不是窗体,是没有句柄的,所以你的代码不能实现toplor(霜天晓竹):
      怎么调用APIHook?
      

  8.   

    调用SetWindowsHookEx和UnHookWindowsHookEx等函数,使自已的Dll注入到需要取得Label的文字的所在的进程, 找到TextOut等系统API的地址,修改它的前五个字节,使其跳转到自已定义的截获函数,这样做之后每一条TextOut系统调用都会转到你的自定义函数之中来,这样就可以获得所有的字符输出.
    关键API:
    WriteProcessMemory
    OpenProcess
    VirtualQuery
    VirtualProtect还有Jmp指令0xE9等
    ---------------------------------------------------------
    风过西窗客渡舟船无觅处
    年年一川新草遥看却似旧
      

  9.   

    深了,连汇编都上来了
    说实话,我基础比较差,有几个关键点还不是很明白1、我怎样找到TextOut系统API的地址
    2、我没改写过进程内存,希望能简单介绍一下,或介绍本参考书
      

  10.   

    给你介绍一本还算不错的书吧: <<Delphi下深入Windows核心编程>>
    ---------------------------------------------------------
    风过西窗客渡舟船无觅处
    年年一川新草遥看却似旧
      

  11.   

    ok, thx a lot, settle accounts!