在 C# 的 Windows Forms 中,使用 Windows API 的 SendMessage
方法可以实现窗口间的消息通传递,当然也可以在不同的进程之间发送消息。接下来,我将为您提供一个基本的示例,演示如何使用 SendMessage
以及如何重写 WndProc
方法来接收并处理消息。
首先,你需要添加对Windows API的引用:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
SendMessage API 函数的参数如下:
- hWnd:要接收消息的窗口的句柄。
- Msg:指定发送的消息。
- wParam:指定附加的消息特定信息。
- lParam:指定附加的消息特定信息。
你可以定义自己的消息:
const int WM_MYMSG = 0x8000; // 用户自定义消息
然后你可以使用 SendMessage 向特定窗口发送消息:
// 获取目标窗口句柄,假设窗口的名字为 "targetWindowName"
IntPtr hWnd = FindWindow(null, "targetWindowName");
if (hWnd != IntPtr.Zero) {
// 向目标窗口发送消息
SendMessage(hWnd, WM_MYMSG, IntPtr.Zero, IntPtr.Zero);
}
接收消息并处理,你需要重写窗口的 WndProc
方法:文章来源:https://www.toymoban.com/news/detail-619705.html
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_MYMSG) {
// 处理消息
MessageBox.Show("接收到自定义消息");
}
}
请注意,SendMessage
是一个阻塞函数,它将等待目标窗口处理完消息才会返回。如果你希望函数发送消息后立即返回,你可以使用 PostMessage
函数。另外,如果你要跨进程发送消息,你可能需要进行更多的权限检查和错误处理。文章来源地址https://www.toymoban.com/news/detail-619705.html
到了这里,关于C# Winform 多进程窗体间传值->SendMessage()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!