易截截图软件、单文件、免安装、纯绿色、仅160KB

C# copydata消息处理

http://blog.csdn.net/carl2380/archive/2009/11/18/4826973.aspx
简介:
本文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据.
进程之间通讯的几种方法:
在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有
  使用内存映射文件
  通过共享内存DLL共享内存
  使用SendMessage向另一进程发送WM_COPYDATA消息
比起前两种的复杂实现来,WM_COPYDATA消息无疑是一种经济实惠的一中方法.
WM_COPYDATA消息的主要目的是允许在进程间传递只读数据。Windows在通过WM_COPYDATA消息传递期间,不提供继承同步方式。SDK文档推荐用户使用SendMessage函数,接受方在数据拷贝完成前不返回,这样发送方就不可能删除和修改数据:
这个函数的原型及其要用到的结构如下:
SendMessage(hwnd,WM_COPYDATA,wParam,lParam);
其中,WM_COPYDATA对应的十六进制数为0x004A
wParam设置为包含数据的窗口的句柄。lParam指向一个COPYDATASTRUCT的结构:
typedef struct tagCOPYDATASTRUCT{
    DWORD dwData;//用户定义数据
    DWORD cbData;//数据大小
    PVOID lpData;//指向数据的指针
}COPYDATASTRUCT;
该结构用来定义用户数据。
具体过程如下:
首先,在发送方,用FindWindow找到接受方的句柄,然后向接受方发送WM_COPYDATA消息.
接受方在DefWndProc事件中,来处理这条消息.由于中文编码是两个字节,所以传递中文时候字节长度要搞清楚.
代码中有适量的解释,大家请自己看吧.
具体代码如下:
//---------------------------------------------------
//发送方:
//---------------------------------------------------
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
namespace WindowsFormGetMsg
{
 public class Form1 : System.Windows.Forms.Form
 {
  private System.Windows.Forms.TextBox textBox1;
  private System.ComponentModel.Container components = null;
  const int WM_COPYDATA = 0x004A;
  public Form1()
  {
   InitializeComponent();
  }
  protected override void Di


相关文档:

c#简单操作注册表

一、首先先添加引用    using Microsoft.Win32;     
//因为操作注册表的两个类RegistryKey和Registry都包含在此引用中;
 
二、编写代码开始操作注册表
1、 #region      限制软件的使用次数
        pri ......

基于C#的MapInfo开发时常用的命名空间总结


命名空间:  MapInfo.Data
MapInfo.Data 命名空间包含了实现 MapInfo .NET 数据提供方的类和接口。 对 MapInfo 数据的访问有两种形式:作为使用 SQL 与数据交互的 ADO.NET 数据提供程序和作为使用类与数据交互的 Feature 对象。 MapIn ......

C#界面美化推荐DotNetBar

DotNetBar正式版8.4.0.2,通过中国控件网采购。与试用版有明显的区别。主要是启动速度,正式版启动速度很快。另外有个问题提醒大家。
1、在工具栏中添加竖条,在DotNetBar中只需将需要添加这个竖条后面的控件的BeginGroup属性为true即可。
2、ComboBoxItem,使用。当DropDownStyle为DropDown时,不能在设计界面添加item否 ......

C#编程水平的50个要点

1.总是用属性 (Property) 来代替可访问的数据成员
2.在  readonly 和 const 之间,优先使用 readonly
3.在 as 和 强制类型转换之间,优先使用 as 操作符
4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if
5.总是为自定义类重载 ToString 方法
6.区别值类型和引用类型
7.使用不可变的值类型(Immu ......

c#继承父类技巧,并增加新的实现

1 父类  partial class FormBillTemplet:Form
        /// <summary>
        /// 新单
        /// </summary>
        /// <param name="s ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号