Delphi application Send Data to C# application
来源:互联网 发布:帝国cms 全站搜索模板 编辑:程序博客网 时间:2024/06/14 22:05
最近做C/S的程序,不免要遇到窗体及程序间数据的传递,程序间或者进程间数据的封送传递,我知道的方法不多(学习不够啊),我最喜欢用的就是发送WM_COPYDATA消息,这时就要遇到CopyDataStruct结构体了,对于这个结构体的原形,我们并不陌生.
typedef struct tagCOPYDATASTRUCT {
DWORD dwData;
DWORD cbData;
PVOID lpData;
} COPYDATASTRUCT;
dwData是要封送的数据,也可以不用它
cbData是要封送的数据的大小,
lpData是要封送的数据的内存地址
其实有后两个参数,封送数据就可以完成了,下面是我用Delphi程序向C#程序发送数据的代码:
const
WM_COPYDATA = $004A;
Type
TSelCorrelateDatePara1 = packed record
PkF: array [0..19] of char;
PkV: array [0..19] of char;
end;
///数据发送端代码
procedure TForm1.Button4Click(Sender: TObject);
var
pMyCDS: TCopyDataStruct;
SelCorrelateDatePara: TSelCorrelateDatePara1;
hd:HWND;
begin
pMyCDS.cbData := SizeOf(SelCorrelateDatePara);
SelCorrelateDatePara.PkF := String('Hello');
SelCorrelateDatePara.PkV := String('happy new year');
pMyCDS.lpData := @SelCorrelateDatePara;
hd := FindWindow(nil,'好心情');//查找目标窗体
if hd <> 0 then
begin
ShowMessage(inttostr(hd));
SendMessage(hd,WM_COPYDATA,0,integer(@pMyCDS));
end;
end;
下面是C#接收数据的代码:
首先,类外定义:
[StructLayout(LayoutKind.Sequential)]
public struct Mydata11
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string str1;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string str2;
}
[StructLayout(LayoutKind.Sequential)]
public struct COPYDATASTRUCT
{
public int dwData;
public int cbData;
public int lpData;
}
接收代码:
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_COPYDATA:
MessageBox.Show("信息已经收到");
COPYDATASTRUCT mystr = (COPYDATASTRUCT)m.GetLParam(typeof(COPYDATASTRUCT));
Mydata11 md2 = (Mydata11)Marshal.PtrToStructure((IntPtr)mystr.lpData, typeof(Mydata11));
this.tb1.Text = md2.str1;
this.tb2.Text = md2.str2;
break;
}
base.WndProc(ref m);
}
完毕.
- Delphi application Send Data to C# application
- DELPHI / Determine The Path To The Users Application Data
- Dynamic Data linq to SQL Web Application
- Delphi Data Type to C# Data Type
- C# application
- How to Add Core Data to an existing Utility Application
- How to use log4net in C# application
- An application sends the WM_COPYDATA message to pass data to another application
- Delphi 的Application
- Delphi : Application.MessageBox
- Delphi Application.Run语句
- Delphi Application.MessageBox详解
- DELPHI application.createForm
- Using the Android Application class to persist data
- Using Application Engine to Import Data from Files
- [c#] How to use Data Access Application Block?
- Saving data to a file in your Android application
- Data Access Application Block
- 常见J2ME系统属性及其作用列表
- Gridview用法大总结(牛年珍藏版)
- SQL 常用语法
- Aqua Data Studio应用总结(csdn内转载)
- 著名网站系统架构设计
- Delphi application Send Data to C# application
- 1、将数组中的元素再定义为特殊的名字方便程序中使用
- 关于谷歌云计算
- 计算机专业毕业生如何面对就业寒冬
- Nutch中的乱码完全解决方案
- Breaking Changes for ASP.NET 2.0 applications running in Integrated mode on IIS 7.0
- qmail-smtpd run script
- 浅析Hibernate下数据批量处理方法
- java手机机型对应表