我找到一个窗口的Handle后,却不知道怎么去修改那个窗口里的Edit的值,我要把此Edit的值找出来后,进行一些运算后再写到另一个Edit中去。用 spy 看以的东西。贴出来看看。http://free.efile.com.cn/qufo/handle.GIFvar
h:THandle;
begin
h:=findwindow(pchar('FNWNS050'),Pchar('输入细目   ( 完成F9, 取消ESC )'));
setforegroundwindow(h);然后要怎样取得图中BEM05400010 的值,然后查找数据库(假设找到后为 25.6 相关查询我会弄 )并把此值  25.6 写入到图中 78787878 的地方呢。
end;

解决方案 »

  1.   

    下面这段代码就可以了: 
     H:=FindWindow(nil,'test'); //查找目标窗口
      H:=FindWindowEx(H,0,'TEdit',nil);// 查找目标控件
      if H<>0 then
      begin
        i := sendmessage(H,WM_GETTEXTLENGTH,0,0);
        sendmessage(H,WM_GetText,i+1,integer(@str));
        edit1.Text := str;
      end;
      

  2.   

    山面用到的变量定义为:
    var
      H:HWND;
      str : array[0..127] of char;
      i : integer;
      

  3.   

    能找到 Edit 是对呀,可是那里有8个 Edit 我只要其中的两个呀,一个读出数据,另一个写入。怎么找到那两个来呢。
      

  4.   

    //能找到 Edit 是对呀,可是那里有8个 Edit 我只要其中的两个呀,一个读出数据,另一个写入。//怎么找到那两个来呢。你这两个edit总得有个标记吧,也就是和其他edit区分的标记,不然程序怎么来区分。
      

  5.   

    showmessage( self.Components[1].Name);
    这就可以看到相应components的名字的!你不会连名字都不知道吧!
    如果那样的话,你只能比较里面的内容了!
      

  6.   

    我也觉得呀,我们在delphi里写程序时有个 Name可以分别呀,可是你看看那张图上,几个Edit都好象没分别似的。
    所以我才在其中一个写上787878 的,以此标记一下我就要那个框的。
      

  7.   

    var s:pchar;
    begin
      getmem(s,100);
      getwindowtext(handle,s,100);
      showmessage(s);
      freemem(s);
    end;