解决方案 »

  1.   

    你直接向编辑框所在的主窗口发送自定义消息,消息的LPARAM传(LPARAM)pStr,在消息的处理函数当中::SetWindowText
      

  2.   

    对于其他进程内的子窗口的edit,SetWindowText是无效的,因为新标题在本进程内,无法跨进程传输。方案有三:1、注入法,在远程进程开辟一块内存VirtualAllocEx,写入新标题WriteProcessMemory,发消息WM_SETTEXT即可2、模拟输入法,将新标题拆成char,用WM_CHAR消息一个一个的发送过去3、剪贴板法,将新标题复制到剪贴板,然后发送WM_PASTE消息
      

  3.   

    "SetWindowText(Get)"   系统经过特殊处理 可以 跨进程。
      

  4.   

    要是能通过SetWindowText,getWindowText,那真是见鬼了,终于有一个同说法的。
      

  5.   

    postmessage就可以吧 发不同进程吧
      

  6.   

    是sendmessage可以发不同进程吧
      

  7.   

    使用 
    :::SendMessage(hWnd, WM_SETTEXT, NULL, (LPARAM)文本内容);
    可以 跨进程的
      

  8.   

    同意楼上的,sendmessage是可以跨进程的。
      

  9.   


    获取编辑框句柄的代码:
    HWND CMainDlg::MouseGetWindow()
    {
    POINT pnt;
    RECT rc; HWND DeskHwnd = ::GetDesktopWindow();    //取得桌面句柄
         HDC DeskDC = ::GetWindowDC(DeskHwnd);     //取得桌面设备场景
        
         int oldRop2 = SetROP2(DeskDC, R2_NOTXORPEN);
         ::GetCursorPos(&pnt);                //取得鼠标坐标
         HWND UnHwnd = ::WindowFromPoint(pnt) ;    //取得鼠标指针处窗口句柄

    HWND hwndResuult = UnHwnd;
         HWND grayHwnd = ::GetWindow(hwndResuult, GW_CHILD); //获得g_hWnd的第一个子窗口句柄
    RECT tempRc;
    BOOL bFind=FALSE;
       
    while (grayHwnd)
    {
             ::GetWindowRect(grayHwnd, &tempRc); if(::PtInRect(&tempRc,pnt))
    {
    bFind = TRUE;
    break;
    }
    else
    grayHwnd = ::GetWindow(grayHwnd, GW_HWNDNEXT);
            
    }//while end     if(bFind == TRUE)
         {
             bFind= FALSE;
             hwndResuult = grayHwnd;
         }
    else
             ;//Wnd=UnHwnd

    ::GetWindowRect(hwndResuult, &rc);      //'获得窗口矩形

         if( rc.left < 0 ) rc.left = 0;
         if (rc.top < 0 ) rc.top = 0;     HPEN newPen = ::CreatePen(0, 3, RGB(125,0,125));    //建立新画笔,载入DeskDC
         HGDIOBJ oldPen = ::SelectObject(DeskDC, newPen);
         ::Rectangle(DeskDC, rc.left, rc.top, rc.right, rc.bottom);  //在指示窗口周围显示闪烁矩形
        Sleep(400);    //设置闪烁时间间隔
         ::Rectangle( DeskDC, rc.left, rc.top, rc.right, rc.bottom);

         ::SetROP2(DeskDC, oldRop2);
         ::SelectObject( DeskDC, oldPen);
         ::DeleteObject(newPen);
         ::ReleaseDC( DeskHwnd, DeskDC);
    DeskDC = NULL; return hwndResuult;
    }
      

  10.   

    以下的操作 不在 一个 进程 无效:
       ::GetWindowRect(hwndResuult, &rc);      //'获得窗口矩形
         
            if( rc.left < 0 ) rc.left = 0;
            if (rc.top < 0 ) rc.top = 0;
     
            HPEN newPen = ::CreatePen(0, 3, RGB(125,0,125));    //建立新画笔,载入DeskDC
            HGDIOBJ oldPen = ::SelectObject(DeskDC, newPen);
            ::Rectangle(DeskDC, rc.left, rc.top, rc.right, rc.bottom);  //在指示窗口周围显示闪烁矩形
           Sleep(400);    //设置闪烁时间间隔
            ::Rectangle( DeskDC, rc.left, rc.top, rc.right, rc.bottom);
         
            ::SetROP2(DeskDC, oldRop2);
            ::SelectObject( DeskDC, oldPen);
            ::DeleteObject(newPen);
            ::ReleaseDC( DeskHwnd, DeskDC);
        DeskDC = NULL;
      

  11.   

    回复楼上:
         这段代码对获取窗口句柄没有作用,只是为了让抓取的窗口边框闪烁显示,就像spy++那样。