110,538
社区成员
发帖
与我相关
我的任务
分享
TrafficMsg.PostMessage(hand,500,MsgId,0);//向目标窗口发送消息
using System;
using System.Runtime.InteropServices;
namespace QQloginCont
{
/// <summary>
/// 用于在不同的窗体中发送消息
/// </summary>
public class TrafficMsg
{
public TrafficMsg()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 提供Win32的消息发送,发送后等到处理完成然后返回
/// </summary>
/// <param name="hWnd">要发送消息窗体的句柄</param>
/// <param name="Msg">需要发送的指定消息</param>
/// <param name="wParam">需要发送的指定附加消息</param>
/// <param name="lParam">需要发送的指定附加消息</param>
/// <returns></returns>
[DllImport("User32.dll",EntryPoint="SendMessage")]
public static extern int SendMessage(int hWnd,int Msg,int wParam,int lParam);
/// <summary>
/// 提供Win32的消息发送,发送后立即返回
/// </summary>
/// <param name="hWnd">要发送消息窗体的句柄</param>
/// <param name="Msg">需要发送的指定消息</param>
/// <param name="wParam">需要发送的指定附加消息</param>
/// <param name="lParam">需要发送的指定附加消息</param>
/// <returns></returns>
[DllImport("User32.dll",EntryPoint="PostMessage")]
public static extern bool PostMessage(int hWnd,int Msg,int wParam,int lParam);
}
}
namespace System.Windows.Forms
{
// 摘要:
// 实现 Windows 消息。
public struct Message
{
// 摘要:
// 确定 System.Windows.Forms.Message 的两个实例是否不相等。
//
// 参数:
// a:
// 要与 b 进行比较的 System.Windows.Forms.Message。
//
// b:
// 要与 a 进行比较的 System.Windows.Forms.Message。
//
// 返回结果:
// 如果 a 和 b 不表示同一个 System.Windows.Forms.Message,则为 true;否则为 false。
public static bool operator !=(Message a, Message b);
//
// 摘要:
// 确定 System.Windows.Forms.Message 的两个实例是否相等。
//
// 参数:
// a:
// 要与 b 进行比较的 System.Windows.Forms.Message。
//
// b:
// 要与 a 进行比较的 System.Windows.Forms.Message。
//
// 返回结果:
// 如果 a 和 b 表示同一个 System.Windows.Forms.Message,则为 true;否则为 false。
public static bool operator ==(Message a, Message b);
// 摘要:
// 获取或设置消息的窗口句柄。
//
// 返回结果:
// 消息的窗口句柄。
public IntPtr HWnd { get; set; }
//
// 摘要:
// 指定消息的 System.Windows.Forms.Message.LParam 字段。
//
// 返回结果:
// 消息的 System.Windows.Forms.Message.LParam 字段。
public IntPtr LParam { get; set; }
//
// 摘要:
// 获取或设置消息的 ID 号。
//
// 返回结果:
// 消息的 ID 号。
public int Msg { get; set; }
//
// 摘要:
// 指定为响应消息处理而向 Windows 返回的值。
//
// 返回结果:
// 消息的返回值。
public IntPtr Result { get; set; }
//
// 摘要:
// 获取或设置消息的 System.Windows.Forms.Message.WParam 字段。
//
// 返回结果:
// 消息的 System.Windows.Forms.Message.WParam 字段。
public IntPtr WParam { get; set; }
// 摘要:
// 创建一个新的 System.Windows.Forms.Message。
//
// 参数:
// hWnd:
// 该消息的窗口句柄。
//
// msg:
// 消息 ID。
//
// wparam:
// 消息 wparam 字段。
//
// lparam:
// 消息 lparam 字段。
//
// 返回结果:
// System.Windows.Forms.Message,表示已创建的消息。
public static Message Create(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam);
//
//
// 参数:
// o:
//
// 返回结果:
// 如果 obj 和该实例具有相同的类型并表示相同的值,则为 true;否则为 false。
public override bool Equals(object o);
//
//
// 返回结果:
// 一个 32 位有符号整数,它是该实例的哈希代码。
public override int GetHashCode();
//
// 摘要:
// 获取 System.Windows.Forms.Message.LParam 值,并将其转换为对象。
//
// 参数:
// cls:
// 用于创建实例的类型。必须将该类型声明为结构类型。
//
// 返回结果:
// System.Object,表示 cls 参数利用消息的 System.Windows.Forms.Message.LParam 字段中的数据来指定的类的实例。
public object GetLParam(Type cls);
//
public override string ToString();
}
}
protected override void DefWndProc(ref System.Windows.Forms.Message m)
{
switch(m.Msg)
{
case 500://向窗体中添加消息
string MsgToAdd;
MsgToAdd=ShareDate.Msg[m.WParam.ToInt32()].ToString();
AddMsg(MsgToAdd);
break;
case 501://将本窗体激活
this.Activate();
break;
default:
base.DefWndProc(ref m);
break;
}
}