因为工作原因
我们现在使用的程序A
里面一堆文本框
下面的人把EXCEL表格报上来  我对着EXCEL传到程序A中我想 编一个程序B 先吧EXCEL的数据导进来
点确定  自动把数据导入程序A的文本框中请问 导入程序A的思路 或者 可以BAIDU的关键字

解决方案 »

  1.   

    通过FindWindow找到程序A窗口的句柄    
    通过该窗口句柄得到文本框的句柄(ID可以通过spy++)获取    
    通过SendMessage发送消息设置文本框框的内容 
      

  2.   

    先把excel的数据转换成文本,每行的不同数据之间用指定的分隔符分隔开,如“,”。然后用Stringlist读出每行的数据,并且按分隔符分解为你所需的每一个数据。然后用findwindow的方式找到程序A的句柄,并且用findwindowex的方式找到所有要填写内容的edit的句柄,用sendmessage往各个edit中发送各自的数据内容即可,最后还是用sendmessage发送点击按钮的消息,完成对程序A的控制
      

  3.   

    现在的难点是  把程序B的数据导到A里  EXCEL文件已经导入B里了我的思路是 我设置个全局热键  F2, 先手动在程序A的文本框里,焦点就到文本框里了然后按F12 模拟按下 需要导入数据的键盘 比如 需要在程序A 里输入 123  就依次模拟点击123
    ----------
    我对
    SuperTitan001  兄的思路很感兴趣
    能摆脱说详细点吗
    谢谢
      

  4.   

    给个简单的例子
    我有程序A,需要输入密码,窗体显示为‘请输入密码’下面的程序可以为密码edit输入‘1234’
    procedure TForm1.Button1Click(Sender: TObject);
    var
      h:HWND;
    begin
      h:= FindWindow(nil,'请输入密码');
      h:=findwindowex(h,0,'TEdit',nil);                  //当然,这个句柄可以通过VC自带的SPY++来查看,是一样的
      SendMessage(h,WM_SETTEXT,255,Integer(PChar('1234')));
      edit1.Text:=inttostr(h);
    end;
      

  5.   

    哦 关键是不知道 窗口句柄 
    ------------
    另 这是我搜的 代码 正好能用
    但是 怎么 把他设置成全局热键啊
    uses
      Clipbrd;
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var
      clp:Tclipboard;
      i:  integer;
      str: string;
    begin
      if key=vk_f2 then
      begin
        clp:=Tclipboard.Create;
        str:=clp.AsText;
        for i:=1 to length(str) do
        begin
          keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), 0 , 0 );
          sleep(500);
        end;
        clp.Free;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      keybd_event(vk_f2, MapVirtualKey(vk_f2, 0 ), 0 , 0 );
    end;
      

  6.   

    实在不行你就用spy++去看,都可以查到的
      

  7.   

    知道程序A的窗口标题,就可以得到句柄了。FindWindow(nil, '程序A标题');
      

  8.   

    啊 原来是这样啊  
    那 文本框的句柄ID是如何得到呢?
    是用SPY++吗、
    抱歉 大学毕业都快4年了
    该忘得都忘得差不多了 
      

  9.   

    var
    h,h1,h2,h3:THandle;//h是程序A的句柄,h1,h2,h3是三个edit的句柄
    begin
      h:=FindWindow(nil, '程序A标题');
      h1:=FindWindowEx(h,0,'TEdit',nil);
      h2:=GetWindow(h1,GW_HWNDNEXT);
      h3:=GetWindow(h2,GW_HWNDNEXT);
    end;这样句柄就全有了