我用WindowFromPoint函数取到了鼠标的位置,但是确无法取得所在位置的窗口的text
比如,我随便画一个对话框,上面放一个edit控件
我把鼠标放在这个edit上,我再在别的程序里通过WindowFromPoint取得edit控件的句柄,最后用GetWindowText取得文本,但是无法取到,请问这是为什么,我不像用hook,有办法吗?在线等待

解决方案 »

  1.   

    查一下你用 windowformpoint 时输入的 point 是不是正确的 screen 座标系
      

  2.   

    handle绝对没问题,我用spy++对过,完全一样,而且,当我用spy++取得的句柄来GetWindowText也还是不行(我带edit控件窗口一直开着,所以句柄是不变的)
      

  3.   

    先得到窗口的句柄,然后SendMessage(handle,WM_GETWINDOWTEXT);好像是,自己查一下帮助。
      

  4.   

    CWnd *tagWnd = WindowFromPoint(point);
    szText.Empty();
    tagWnd->GetWindowText(szText);
    SetDlgItemText(IDC_EDIT_WIN_NAME,szText);
      

  5.   

    请注意,这种方法只能在Win9x下有效,在NT/2K/XP平台下,必须使你的程序与目标程序在同一个进程那,才能用以上的方法得到密码框的密码。
      

  6.   

    To  itaolu(老罗) 我不是密码只是普通的edit,并且是完整显示字符,我不明白,TO Saimen(单身情人) ( ) 你试过吗?我的平台是2000,你调试通过吗?如果正确马上给份
      

  7.   

    密码与普通的TEXT也是一样的。但是如果你要得到另外一个进程的TEXT,就必须保证是同一个进程,否则是无效的。
      

  8.   

    不用的,罗工,我在 2000 下写了一个程序可以通过 GetWindowText 获取内容
      

  9.   

    To  Saimen(单身情人) 
    是吗,我觉得: itaolu(老罗) 说的有道理,我只是尝试一下,我不明白你为什么可以在2000下通过,要不你把你程序发给我,如果通过,我立即送分[email protected]
      

  10.   

    To abrams(去魔兽3不?) :我发了我的程序给你了,请收信看看。我的是用鼠标钩子做的。如果可以不用hook,我也很想看看是如何做到的。
      

  11.   

    To Saimen(单身情人):
    我认为你说的是不可能实现的,除非你是对自己的进程进行截取。