通过ClipBoard,一个程序往Clipboard写,另一个截获Clipboard事件,从Clipboard读.

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SendMessage(Memo1.Handle, WM_SETTEXT, 0, Longint(PChar('可以通过FindWindow()来找到窗体句柄')));
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SendMessage(Memo1.Handle, WM_SETTEXT, 0, Longint(PChar('可以通过FindWindow()来找到窗体句柄')));
    end;
      

  3.   


    用FindWindow找到那个窗口的句柄,然后就好办了
    或者PostMessage(...);或者FindChildControl('Edit1').SetTextBuf('s')
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SendMessage(Button2.Handle, WM_LBUTTONDOWN, 0, 0);
      SendMessage(Button2.Handle, WM_LBUTTONUP, 0, 0);
    //  SendMessage(Button2.Handle, CN_COMMAND, BN_CLICKED, 0);
    end;
      

  5.   

    需要配合SPY++来找到类名和窗口名
      

  6.   

    感谢,
    不过我只知道这程序运行时的title名,不知道里面的文本框和按钮名,怎么办?
      

  7.   

    var
      hd:THANDLE;
    begin
      hd := FindWindow('TForm1','Form1');
    end;
      

  8.   

    //把鼠标移动到你想知道具体信息的窗体上
    //看看它的ClassName和Text就可以用FindWindowprocedure TForm1.Timer1Timer(Sender: TObject);
    var
      Buffer: array[0..256] of Char;
    begin
      GetClassName(WindowFromPoint(Mouse.CursorPos), Buffer, 256);
      Edit1.Text := Buffer;
      GetWindowText(WindowFromPoint(Mouse.CursorPos), Buffer, 256);
      Edit2.Text := Buffer; //nil 和 ''不是一会事!
    end;
      

  9.   

    我正好对这个问题赶兴趣,看了上面的帖子,终于实现了楼主要求的功能.1.用findwindow函数获得窗体句柄
    2.利用findwindowEx进一步查找文本框
    3.利用sendmessage输入文本
    假设目标窗体标题是'form2'
    procedure TForm1.Button1Click(Sender: TObject);
    var ret:hwnd;
    begin
    ret:=findwindow(nil,'form1');
    if ret>0 then
      begin
        ret:=findwindowex(ret,0,'Tedit',nil);{最后一个参数是输入框的名字,知道的话可以写上,名字和类可以通过Spy+得到}
        sendmessage(ret,wm_settext,0,longint(pchar('aaa')));  end;
    end;
      

  10.   

    1.FindWindow得到主窗口句柄,前提知道这个窗口的classname.2.使用EnumChildWindow和GetClassName得到主窗口内所属控件句柄,
      然后向给定控件发消息.