有一个外部可执行文件(比如计算程序),其中有个文本框,我想取其中的数据,如何处理?

解决方案 »

  1.   

    用FindWindow找到窗口的句柄,然后用FindWindowEx找到文本框,再用GetWindowText取到文本,这样应该就可以了。
      

  2.   

    同意上面的意见!
    也应是说,要用API才可以!
      

  3.   

    procedure TForm1.Button2Click(Sender: TObject);
    var  HWindow,hedit: THandle; //句本柄变量
    szText: Array[0..255] Of char;   //得到的字符串
    Begin
       HWindow := 0;
       While true Do
          Begin
           HWindow := FindWindowEx(0, HWindow, 'SciCalc', Nil);//找计算器的窗体
           if HWindow=0 then exit;
           If HWindow <> 0 Then
            Begin
            hEdit := FindWindowEx(hwindow, 0, 'Edit', Nil);  //找到edit文本框
            if HEdit<>0 then
            begin
          SendMessage(hEdit, WM_GetTEXT, 256,integer(@szText[0])); //取值
          edit1.Text:= szText; //符值
         break;
        End;
        end;
      end;
    End;
      

  4.   

    给你写了一个获得记事本文本的例子,你看下吧。好像用GetWindowText只能得到标题的?
    这个还要研究一下。
    ^_^
    -----------------------------------------------------
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MainHandle,MemoHandle :THandle;
      Text :Array [0..100] of Char;
      TextLen :Integer;
    begin
      MainHandle := FindWindow('notepad',nil);
      MemoHandle := FindWIndowEx(MainHandle,0,'Edit',nil);
      ShowMessage(IntToStr(MemoHandle));
      SendMessage(MemoHandle,WM_GETTEXT,100,LongInt(@Text));
      Memo1.Text := Text;
    end;
      

  5.   

    用GetwindowText获得不了Edit的text的  不知道是什么原因
      

  6.   

    PB做的窗体与一般程序不同,不能取得,怎么对待?-------------------------------
    不会的,是你用的方法不对,在WINDOWS下,应该都市有控件句柄的
      

  7.   

    这跟用什么做的没有关系,只要是windows程序就可以用这种方法去获得。
      

  8.   

    PB做的窗体与一般程序不同,不能取得控件句柄,怎么对待?
    不至于吧,直接调用api函数,跟什么语言没关系吧
      

  9.   

    在PB中对于数据窗口内的一些编辑框它没有窗口的,它是PB画出编辑框的外观来的,所以确实无法获取。对于一些标准的编辑框,一般用GetWindowText可以获取,当如果象密码输入框之类的编辑框,得通过发送WM_GetText来获取,如SendMessage(Wnd,WM_GetText,iTextMax,Integer(@sText[1]));