C# Winform 多进程窗体间传值->SendMessage()

chatgpt/2023/9/26 12:51:48

在 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 方法:

protected override void WndProc(ref Message m)
{base.WndProc(ref m);if (m.Msg == WM_MYMSG) {// 处理消息MessageBox.Show("接收到自定义消息");}
}

请注意,SendMessage 是一个阻塞函数,它将等待目标窗口处理完消息才会返回。如果你希望函数发送消息后立即返回,你可以使用 PostMessage 函数。另外,如果你要跨进程发送消息,你可能需要进行更多的权限检查和错误处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5314265.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

Clamp的介绍

Clamp的介绍 在Unity中,clamp是一种用于限制数值范围的函数。它可以帮助开发者将数值限制在指定的范围内,以避免数值溢出或错误。Unity中提供了多种clamp函数,包括clamp01、clamp、clampMagnitude、clampMin、clampMax和clampValue等。 Cla…

Stable Doodle:Stability AI推出的一款零门槛AI绘画神器

Stable Doodle是由Stability AI推出的一款零门槛AI绘画神器,可以将简单的草图转化为精美的图像。它可以将随手的塗鴉草稿转化为高畫質的完成圖,让用户能够以更快的速度将想法转化为精美的艺术作品。Stable Doodle利用最新的Stable Diffusion模型&#xf…

展锐USB充电图标更新流程

介绍 power_supply 目录下online节点是用于判断是否插入battery、ac(外部电源) 和USB 的节点,目录在sys/class/power_supply/battery(ac、usb)/online,主要用于在StatusBar 上显示充电的闪电图标。 SystemUI层介绍 流程介绍 在SystemUI 中控制充电图…

linux下makefile文件编写

在linux环境下编译项目时,我们可能会连接很多头文件和动态库。这会给我们造成很多的麻烦。这时我们使用makefile文件会极大地简便我们项目的编译过程。下面是一些步骤。 1.创建makefile文件 vi makefile2.编辑makefile文件,样例如下 LIBS:hcnetsdk Audi…

BMI指数计算小工具Java

现在越来越多的人关注健康,关注身材管理,不妨做个小工具,计算自己的BMI,给自己制定合理的健身或减肥计划,享受健康生活!!!BMI的计算标准从网上找的,不知道是否准确&#…

Elasticsearch和MySQL之间的数据同步问题

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章参考网上的课程,介绍Elasticsearch和MySQL之间的数据同步问题。 如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。 小威在…

Elasticsearch零基础实战

问题点 es磁盘量超80%,es会锁住,看看如何解决 相关资源 测试环境kibana地址:http://10.7.176.72:5601/app/home#/ 10.7.176.72-74 es装配信息 安装路径:/home/elas/es-8.7.0 数据路径:/home/elas/es-8.7.0/d…

《向量数据库指南》——向量数据库市场格局

目录 向量数据库mapping Pinecone: Weaviate MongoDB: Chroma Milvus Cloud Qdrant Vespa,Yahoo 开源产品 Fabarta ArcVector Tencent Cloud VectorDB Faiss 向量数据库mapping
推荐文章