使用钩子程序可不可以把任意应用程序窗口上的控件内容读出?比如某程序有一个ListView控件,这个程序正在运行,我是否可以把它的每隔Item的Caption读出来,
如果可以,能否给简单讲解一下编程要点,提供一些示例。在此拜谢,若分嫌少,额外在加,我一次最高只能加100分。

解决方案 »

  1.   

    应该可以。最典型的是金山翻译。它好象就是截取win32API,如TextOut等。但是具体实现起来
    不容易。可以试一下别的方法。如先得到Thandle,然后SendMessage(,wm_gettext,,,)。只是一点思路。等待高手答案。
      

  2.   

    如果你的应用程序是用delphi或者是BCB之类开发,他们用的是VCL,读出程序窗口中的控件是易如反掌的事。用VCL的函数GetWindowControl之类的函数就可以了。而且可以直接操作它们。如果不是就不容易了。但如果窗口中的控件用的是Windows本身或者是具有window handle的子窗口,也好办,用Windows的函数 EnumWindows函数就可以找出所有的子窗口控件。然后就可以进行操作了。楼上所说的金山词霸的取词翻译不光是对Window的文本输出函数挂了钩子处理的。也了我上面提到的第二种技术。这跟楼主的帖子没什么关系,我想楼主仅需要我上面提到的第一种技术就可以了。