如何在两个程序之间进行数据交换(100分)

  • 主题发起人 主题发起人 亚党
  • 开始时间 开始时间
我也想要这方面的程序,谢谢打下!
我的Email:weisansao@263.net
 
可以用的很多呀,可以用OLE,DLL,DDE或剪贴板
 
刚好这个问题和我遇到的一摸一样...因此我把别人给我的部分发给你: public
procedure Mymessage(var t:TWmCopyData);message WM_COPYDATA;
{ Public declarations }
end;

var
Form2: TForm2;
implementation
{$R *.DFM}
{ TForm2 }
procedure TForm2.Mymessage(var t: TWmCopyData);
begin
Edit1.text:=StrPas(t.CopyDataStruct^.lpData);//接受数据并显示。
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
ds: TCopyDataStruct;
hd: THandle;
begin
ds.cbData := Length(Edit1.Text) + 1;
GetMem(ds.lpData, ds.cbData);
//为传递的数据区分配内存
StrCopy(ds.lpData, PChar(Edit1.Text));
Hd := FindWindow(nil, 'Form2');
// 获得接受窗口的句柄
if Hd <> 0 then
SendMessage(Hd, WM_COPYDATA, Handle,
Cardinal(@ds)) // 发送WM_COPYDATA消息
else
ShowMessage('目标窗口没找到!');
FreeMem(ds.lpData);
//释放资源
end;

下面是共享内存法
unit ccc;
interface
uses
Windows, Messages, SysUtils,
Classes, Graphics, Controls, Forms,
Dialogs,ShellAPI, StdCtrls, Buttons;
const
WM_BARICON=WM_USER+200;
type
TForm1 = class(TForm)
btnwrite: TBitBtn;
btnread: TBitBtn;
Editwrite: TEdit;
Editread: TEdit;
procedure FormCreate(Sender: TObject);
procedure btnwriteClick(Sender: TObject);
procedure btnreadClick(Sender: TObject);
private
hMapFile: THandle;
MapFilePointer: Pointer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
hMapFile := CreateFileMapping (
$FFFFFFFF, // 特殊内存映射句柄
nil, page_ReadWrite, 0,10000,
'DdhDemoMappedFile');
// 文件名
if hMapFile <> 0 then
MapFilePointer := MapViewOfFile (
hMapFile, // 上面映象文件的句柄
File_Map_All_Access,
0, 0, 0) // 访问整个映象文件
else
ShowMessage ('hMapFile = 0');
if MapFilePointer = nil then
ShowMessage ('MapFilePointer = nil');
end;

procedure TForm1.BtnWriteClick(Sender: TObject);
begin
StrCopy (PChar (MapFilePointer),
PChar (EditWrite.Text));//把内容写入共享内存
end;

procedure TForm1.BtnReadClick(Sender: TObject);
var
S: string;
begin
S := PChar (MapFilePointer);//从共享内存读出内容
EditRead.Text := S;
end;


end.


 
大家别忘记给分呀...我快在大富翁上破产了
 
多人接受答案了。
 
后退
顶部