c# GegMessage使用方法

 [StructLayout(LayoutKind.Sequential)]
        public struct POINTAPI
        {
            public int x;
            public int y;
        }
        [StructLayout(LayoutKind.Sequential)]
        public struct tagMSG
        {
            public IntPtr hwnd;// 消息的目的地句柄 
            public int message;// 消息值,由非负整数来表示
            public IntPtr wParam;// 消息参数 
            public IntPtr lParam;// 消息参数 
            public int time;// 消息发送时间 
            public POINTAPI pt;// 消息发送时,鼠标的位置 
        } 

        //获取消息
        [DllImport("user32", EntryPoint = "GetMessage")]
        public static extern int GetMessage(out tagMSG lpMsg,  int hwnd, int wMsgFilterMin,int wMsgFilterMax); 

StructLayout 属性用于指定结构体的格式,其主要输入参数有:

1:布局格式
LayoutKind.Sequential 顺序布局
LayoutKind.Explicit 指定每个域的偏移量,如果使用这种,则在每个域的前面加上属性 [FieldOffset(偏移量)]

2: 内存对齐方式
pack = 1, 4, 8 可以根据情况选择一个

 

 

你可能感兴趣的:(c# GegMessage使用方法)