zoukankan      html  css  js  c++  java
  • Windows获取其他进程中Edit控件的内容

      最近做的MFC项目中,有个获取其他进程中Edit控件内容的需求,本来以为是个很简单的问题,但是来来回回折腾了不少时间,发博记录一下。

      刚开始拿到这个问题,很自然的就想到GetDlgItemText():

    UINT GetDlgItemText(
      HWND hDlg,       // handle to dialog box
      int nIDDlgItem,  // control identifier
      LPTSTR lpString, // pointer to buffer for text
      int nMaxCount    // maximum size of string
    );

    The GetDlgItemText function retrieves the title or text associated with a control in a dialog box. 

      看API的描述和要实现的需求一样,自然就用起来了,可发现不管怎样这个API始终调用失败,获取不到内容。一直以为是代码哪里出问题了,调试好久。后来Google之后在CSDN论坛上找到个老帖,得知这个API只有在Windows 2K之前的系统才能跨进程使用,无奈放弃。

      于是查了下,还有一个GetWindowText()

    int GetWindowText(
      HWND hWnd,        // handle to window or control
      LPTSTR lpString,  // text buffer
      int nMaxCount     // maximum number of characters to copy
    );

    The GetWindowText function copies the text of the specified window's title bar (if it has one) into a buffer. If the specified window is a control, the text of the control is copied. However, GetWindowText cannot retrieve the text of a control in another application.


      描述里面很清楚写着不能对其他程序使用,又一次失败。

      PS:吐槽一下,为什么GetDlgItemText()里面不写这句话,浪费俺的时间。╮(╯▽╰)╭

     

    解决方法:使用SendMessage()向进程发WM_GETTEXT消息获取。

      SendMessage(handle,message,Wparam,lparam);

        Handle为窗口句柄,

        message为消息类型,

        wparam和lparam为消息参数;

      WM_GETTEXT
        An application sends a WM_GETTEXT message to copy the text that corresponds to a window into a buffer provided by the caller.

    其实使用这个消息等于用GetwindowText()。。。。

  • 相关阅读:
    Maximum Flow Exhaustion of Paths Algorithm
    ubuntu下安装java环境
    visualbox使用(二)
    vxworks一个超级奇怪的错误(parse error before `char')
    February 4th, 2018 Week 6th Sunday
    February 3rd, 2018 Week 5th Saturday
    February 2nd, 2018 Week 5th Friday
    February 1st, 2018 Week 5th Thursday
    January 31st, 2018 Week 05th Wednesday
    January 30th, 2018 Week 05th Tuesday
  • 原文地址:https://www.cnblogs.com/MuyouSome/p/3333390.html
Copyright © 2011-2022 走看看