我想通过一个程序(A),向另一个程序(B)的edit1.text中发送信息“you is error”文本信息,或通过(B)的edit1.text赋值给(A)程序这个文本也可,可是不知怎样的用以下API函数的参数,第一次用,总不成功,不能传送:
B程序的信息如下:窗口标题为“测试窗口”;Form1:Tform1;
                 edit1:Tedit我在A程序中写下以下的代码,却不知错在那里
procedure Tpswfrm.Button1Click(Sender: TObject);
var
btn,hWnd:THandle;
begin
 hWnd:=FindWindow('测试窗口', nil);  //此处获取B运行程序的窗体信息,不知是用“form1”; 
                                       还是'测试窗口'
 BTN:=FindWindowEx(hWnd,0,'edit1',nil);//获取B程序要输入文本的edit
 sendMessage(BTN,WM_SETTEXT,0,integer(edit1.Text));//将A程序窗体中的edit1.text文本送入B程
                                                     序edit1.text中
end;但是以上就是不行,不知为何,一点反应都没有,明天就要交差了,今天不得不加班,那位高手可否指点一二,感谢了,在线急盼,不等到就不能回家了,后面一发送信息语句开始我也用了这种形式,但不知错在那里,查sendmessage的用法格式是没有错的
sendMessage(BTN,WM_SETTEXT,0,“you is error”);但是连编译都编译不过去;

解决方案 »

  1.   

    其它没看,第一个函数就错了
     hWnd:=FindWindow('测试窗口', nil);
    FindWindow的第一个参数是类名,第二才是窗口标题
    建议判一下每个函数的返回值,就知哪错了
      

  2.   

    也就是改成form1吗,怎样判断函数的返回值,
      

  3.   

    1.var
      hWnd:thandle;
    begin
    hWnd:=FindWindow(nil, 'Form1'); //Form1为目标窗口的标题,前一个为类名,可省
    //最好将当前程序的标题改成其它的,即改当前form的Caption
    if hwnd=0 then
    begin
      ShowMessage('窗口没找到');
      exit;
    end;
    end;
      

  4.   

    全部程序:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    btn,hWnd:THandle;
    begin
    hWnd:=FindWindow(nil, 'Form1');
    if hwnd=0 then
    begin
      ShowMessage('窗口没找到');
      exit;
    end;
    BTN:=FindWindowEx(hWnd,0,nil,'Edit1');//获取B程序要输入文本的edit
    if hwnd=0 then
    begin
      ShowMessage('Edit1没找到');
      exit;
    end;
    sendMessage(BTN,WM_SETTEXT,0,integer(edit1.Text));//end;
      

  5.   

    将”form1"输入显示窗口还没有找到,那这窗口的类是什么
      

  6.   

    要看你目标程序是用什么写的,一般用delphi或bcb写的,类名为TForm,上面讲过,类名可以不要的.要的是标题,即程序运行时窗口左上方显示的内容
      

  7.   

    B程序里的edit还是没有显示我所要的数据,也没提示”没有找到窗口“和没有找到edit",按这样应当是将信息发给了B程序的edit1了,我改后的代码如下:
    procedure Tpswfrm.Button1Click(Sender: TObject);
    var
    btn,hWnd:THandle;
    begin
    hWnd:=FindWindow(nil, '测试窗口');
    if hwnd=0 then
    begin
      ShowMessage('窗口没找到');
      exit;
    end;
    BTN:=FindWindowEx(hWnd,0,nil,'Edit1');//获取B程序要输入文本的edit
    if hwnd=0 then
    begin
      ShowMessage('Edit1没找到');
      exit;
    end;
    sendMessage(BTN,WM_SETTEXT,0,integer(edit1.Text));//end;
      

  8.   

    你要改变TEdit的文本,但又用“Edit1”作为查找窗体的条件,第二次运行还能找到吗?
      

  9.   

    不行,不是大家讲的问题,被输入的窗口的名称一定是没有错的,我有改过其它的试过,没有错,不知错在那里,还是无法向B程序中写入A程序中edit1.text的内容