问题:
编程获取另一个程序中LABEL的内容并修改,该程序是VB编写,已得到该程序句柄,label没有句柄,
已知提示:通过拦截api的重绘函数,拦截到label控件内容
请问该如何编程实现,能提供源代码更好,
非常感谢!

解决方案 »

  1.   

    我看过一些文章说通过拦截Drawtext函数可以实现的,不知道这里有没有高手能实现.
    非常感谢.
      

  2.   

    正确的方案在这里:
    1、运行你所说的“另一个程序”;
    2、启动spy++等窗口侦测工具,搜索到这“另一个程序中LABEL”的控件类名;记下这个控件类名;
    3、在自己的程序中,用上一步的类名做参数,用FindWindowsex()函数来查找这个控件,取得这个控件的句柄。
    4、在自己的程序中,向这个控件的句柄发送消息,用消息的形式改变控件的内容(text或是caption什么的,具体看api函数)   这是高手常用的方法。
      

  3.   

    楼上的,label没句柄的,d的TLabel是从TGraphicControl继承下来的.
    VB的实现也应该差不多.
      

  4.   

    楼主可以共享一下你获取LABEL内容的代码吗?谢谢[email protected]
      

  5.   

    这种用API钩,钩API Drawtext ,然后根据内容判断是不是VB里的那个,然后改变Drawtext 的参数输出内容就可以
      

  6.   

    label没有句柄,无法用常用的API获取内容。要获取label的内容,通常用两种方法:一、采用屏幕取词的方法,但是这种方法必须保持目标程序显示在屏幕上,不能被其他程序所覆盖,所以这种方法有很大局限性;二、采用hook方式,获取label所在的父窗体的句柄,然后对其hook,并转换为实例,然后就可以用遍历子窗体的方式来获取指定label的内容。伴水老大(zswang)曾经写过一个这样的例子,用hook方式获取label内容的,楼主不妨找一下
      

  7.   

    楼上的,能给个例子吗,找不到zswang的例子
    [email protected]
      

  8.   

    确实不好实现,又一看楼主只给20分,看来楼主是对问题不够重视。我自然也没有回答的动力了。还是可以实现的,比如可以把鼠标位置的图像用copyRect画过来分析变成文字,当然用钩子应该也是可以实现,以前曾经在哪个人写的例子里看到过。你所谓的“已知提示”不可行。