某个应用程序A,可以弹出一个带有编辑框E的对话框。
而这个编辑框E只能显示文字,其选择、复制、修改等
功能全部被屏蔽。但是我想把编辑框E中的文本复制下
来,该怎么办?能够不用编程来实现是最好的,但是,
如果必须编程的话,那么又该怎么来实现?

解决方案 »

  1.   

    得到编辑框句柄,GetWindowText()
      

  2.   

    可以继承点击鼠标右键消息,弹出自定义采单,采单上加入copy
      

  3.   

    我用两千试了以下,好象不能用GetWindowText(独立于本程序),不知能不能用类似屏幕取词的方法。
      

  4.   

    取得编辑框E的句柄,然后GetWindowText().
    取得编辑框E,用EnumChildWindow试试。
      

  5.   

    //将客户坐标转换成屏幕坐标 
    ClientToScreen(&point);  
    //返回一个包含指定屏幕坐标点的窗口 
    CWnd* pWnd = CWnd::WindowFromPoint(point);  
    if (pWnd) 

    //获取窗口句柄 
    HWND hwndCurr = pWnd->GetSafeHwnd();  
    if ((::GetWindowThreadProcessId (GetSafeHwnd(), NULL)) != (::GetWindowThreadProcessId (hwndCurr, NULL)))  

    char lpClassName[255]; 
    //获取类名 
    if (::GetClassName(hwndCurr, lpClassName, 255))  

    //判断是否是Edit控件 
    if (0 == m_strWndClass.CompareNoCase("EDIT")) 

    char szText[255]; 
    //通过掌握的句柄hwndCurr向此控件发送WM_GETTEXT消息 
    ::SendMessage(hwndCurr, WM_GETTEXT, 255, (LPARAM)szText); //密码已保存在szText中 
    m_strPassword = szText; } 


    }  
      

  6.   

    感谢wistaria(听风听雨)的详细解答
    那么,如果我要获取的是多行文本该怎么办呢?
      

  7.   

    还有,就是我该怎样获取鼠标的位置呢?
    也就是说,point从何而来。
      

  8.   

    可以这样试一下以下两种方法:
    1、在NT或者2000下(98不行),用vc打开这个应用程序A的可执行程序,打开方式选为resources;然后找到你说的那个对话框,看一看那个编辑控件是不是disabled的,如果是,把它改为enable,然后保存即可。如果在可执行程序中找不到这个对话框,就在别的dll或者exe文件中找一找。2、运行那个应用程序,弹出那个对话框,看看它的标题。自己写一个程序,
    用CWnd *pWnd=FindWindow(NULL,标题);就能得到窗口的指针,然后再调用
    pWnd->GetDlgItem->getwindowtext即可。