我现在可以通过得知窗体上某控件的句柄可获取到其类名和名称以及所在窗体,那我现在是想获取该控件所在窗体中的某个变量的值,比如我有一个Edit控件,他在窗体Form1上,Form上有一个STRINGLIST的公共变量,比如是SL,我现在就是想在已知Edit句柄的情况下,获取到SL的值,比如其STRINGS的数据,有办法吗,窗体不固定,不是那种单纯的窗体A引用窗体B什么的那种

解决方案 »

  1.   

    除非你用softice直接找到该变量的地址,然后打开进程读取该进程的内存地址去取值
      

  2.   

    好像没有能根据句柄找到公用变量的api吧
      

  3.   

    前提是先知道该变量的地址,不管是别人的还是自己的,然后可以用ReadProcessMemory来读取进程的内存地址,如果是别人的需要dll注入和获取读取权限,自己的可以直接使用
      

  4.   


    如果是本程序,直接form1.stringlist1来访问了,只要stringlist1不是私有的已知Edit句柄的情况下,获取到form的值:form1:=edit1.parent;
      

  5.   

    用ReadProcessMemory来读取进程的内存地址
      

  6.   

    窗体不固定,那这些窗体的类是一致的吗?或者你可以改造一下,将这些窗体类全部继承同一超类(具有SL变量),这样就简单了啊,假设超类名称为TMYClass(EDIT1.OWNER).SL即获得了这个变量
      

  7.   


    这个问题.........建议LZ先看一下delphi里的指针