WinCE 在C#里用SendMessage发送结构对象[转]
来源:互联网 发布:淘宝数据采集软件 编辑:程序博客网 时间:2024/06/05 19:28
1 先定义一个消息接类,因为CE里的Form是不支持消息的
class MsgWindow:MessageWindow
{
private IMessage _msgWnd;
public IMessage MsgWnd
{
get { return _msgWnd; }
set { _msgWnd = value; }
}
public MsgWindow(IMessage MsgWnd)
{
this.MsgWnd = MsgWnd;
}
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x004A:
CopyData mystr = new CopyData();
//在这可以把整个Message对象交给实现了接口的类,让他自己转换,因为这是测试,所以为了方便才这在处理
//byte[] bytes=new byte[4];
//Marshal.Copy(m.LParam, bytes, 0, 4);
mystr=(CopyData)Marshal.PtrToStructure(m.LParam, typeof(CopyData));
MsgWnd.GetMessage(m.WParam.ToInt32(), mystr);
break;
default:
base.WndProc(ref m);
break;
}
}
}
2 消息发送 发送到的句柄是消息接收类的句柄
Message msg= new Message();
msg.HWnd=this.MsgHandle;
msg.WParam =(IntPtr) 10;
msg.Msg = 0x004A;
CopyData cd = new CopyData();
//cd.ServiceName = "服务名";
cd.hwnd = 100 ;
cd.ServiceName = "终于得了吧";
msg.LParam = IntPtr.Zero;
int size = Marshal.SizeOf(cd);
IntPtr c = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(cd, c, false);
msg.LParam = c;
MessageWindow.SendMessage(ref msg);
3 用于两者传送的结构也要如下定义,因为CE是全面用Unicode的,所以字符串要为Unicode
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public unsafe struct CopyData
{
public const int WM_COPYDATA = 0x004A;
[MarshalAs(UnmanagedType.I4,SizeConst=4)]
public int hwnd;
[MarshalAs(UnmanagedType.LPWStr,MarshalType="string")]
public string ServiceName;
[MarshalAs(UnmanagedType.I4,SizeConst=4)]
public int i;
[MarshalAs( UnmanagedType.I4,SizeConst=4)]
public int j;
}
public interface IMessage //这是接收消息类所要实现的接口
{
//void GetMessage(ref Message msg);
void GetMessage(int LPARAM, CopyData lpData);
}
- WinCE 在C#里用SendMessage发送结构对象[转]
- WinCE 在C#里用SendMessage发送结构对象
- sendmessage发送结构体
- C# 在C#中使用SendMessage[转]
- 用PostMessage或SendMessage发送结构体指针
- 用PostMessage或SendMessage发送结构体指针 .
- 用PostMessage或SendMessage发送结构体指针
- 用PostMessage或SendMessage发送结构体指针
- 用C#在WinXP和WinCE里获取应用程序当前路径的通用函数
- 应用程序间发送消息 c# SendMessage WM_COPYDATA
- C#调用WinAPI发送消息SendMessage
- c# sendmessage 发送键盘按键详解
- [转]如何在C#里序列化集合对象
- 在C#中使用SendMessage
- 在C#中使用SendMessage
- 在C#中使用SendMessage
- C# SendMessage备忘[转]
- 在C#中SendMessage和PostMessage的参数传递(包括对象和字符串)
- CSS样式解决英文换行断词问题
- BeanFactory与ApplicationContext 区别
- [转]利用Windows性能计数器分析软件产品的性能瓶颈
- 数据库性能优化(1)
- 二叉树 (Binary Tree) 的基本操作 (Java)
- WinCE 在C#里用SendMessage发送结构对象[转]
- 存储过程编写经验和优化措施
- Java 多线程 爬虫程序(spider)设计与实现
- WebLogic学习笔记-Domain
- csdn不错,上面有很多我需要的东西
- Hidden Tricks (C++)(091202)
- javascript学习随笔(使用window和frame)的技巧
- 布隆过滤器 布隆算法 BloomFilter
- 从MySpace基于.NET平台的六次重构经历,来感受分布式系统