请问如何在两个软件之间实现通讯(同一机器上),例如软件A和软件B交换文字,图像等?
请帮忙写一个,越简单约好,最好有些注释,作为本人入门用,thx了

解决方案 »

  1.   

    TO:: zhangheaaa(竹)
        <高级一点的办法,就是使用内存中的共享地址来传递数据。>哪机关枪打蚊子容易误伤别人哦
    建议用INI或注册表,如是文字,之间读取,如果是文件,读取路径
      

  2.   

    client:
    unit Main;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
      StdCtrls, IdAntiFreezeBase, IdAntiFreeze;type
      TForm2 = class(TForm)
        Memo1: TMemo;
        Connect: TButton;
        Client: TIdTCPClient;
        IdAntiFreeze1: TIdAntiFreeze;
        Button1: TButton;
        procedure ConnectClick(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}procedure TForm2.ConnectClick(Sender: TObject);
    begin
      with Client do begin
        Connect;
        while Connected do
        begin
          Memo1.Lines.Add(ReadLn('', 3000));
          if ReadLnTimedOut then
          begin
            MessageDlg('Timeout!', mtInformation, [mbOk], 0);
            Exit;
          end;
        end;
      end;
    end;procedure TForm2.Button1Click(Sender: TObject);
    begin
      self.Memo1.Clear;
    end;end.server:unit Main;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls;type
      TForm1 = class(TForm)
        IdTCPServer1: TIdTCPServer;
        Button1: TButton;
        Button2: TButton;
        Edit1: TEdit;
        Memo1: TMemo;
        procedure IdTCPServer1Execute(AThread: TIdPeerThread);
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
        FSend: Boolean;
        s    : string;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
    begin
      
      if S <> '' then
      begin
        AThread.Connection.Write('NOOP');
        AThread.Connection.WriteLn(s);
        Self.Memo1.Lines.Add(S);
        s := '';
      end;end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      FSend := False;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      FSend := True;
      S     := edit1.Text;end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      IdTCPServer1.Active := True;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      IdTCPServer1.Active := False;
    end;end.
      

  3.   

    我想这个问题,可以用剪贴板吧,用自己自定义的格试好好的看一看 Delphi 的Vcl 库中的 Clipbrd 单玩,我想你会有一定的启发。
      

  4.   

    我认为有三种解决方案:
    1. 共享内存;
    2. 采用管道技术,CreatePipe;
    3. 采用TCP连接方式。
    第二种方式请参看msdn。