两个exe程序,需要传递字符串,要怎么做呢?不用写文件或写注册表再读取这种方式。

解决方案 »

  1.   

    参考如下代码,将发送和接收分开在两个进程中即可
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        procedure WMCOPYDATA(var Msg: TWMCopyData); message WM_COPYDATA;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    // 发送
    var
      vCopyDataStruct: TCopyDataStruct;
      S: string;
    begin
      vCopyDataStruct.dwData := 0;
      S := 'Zswang 路过';
      vCopyDataStruct.cbData := Length(S);
      vCopyDataStruct.lpData := @S[1];
      SendMessage(Handle, WM_COPYDATA, Handle, Integer(@vCopyDataStruct));
    end;procedure TForm1.WMCOPYDATA(var Msg: TWMCopyData);
    // 接收
    var
      S: string;
    begin
      if Msg.CopyDataStruct^.cbData <= 0 then Exit;
      SetLength(S, Msg.CopyDataStruct^.cbData);
      Move(Msg.CopyDataStruct^.lpData^, S[1], Msg.CopyDataStruct^.cbData);
      ShowMessage(S);
    end;