C# Winform窗口间消息通知,使用Windows API SendMessage方法跨进程实现消息发送,重写WndProc方法接收消息并消息处理
主要使用到如下三个方法函数:
- WndProc:主要用在拦截并处理系统消息和自定义消息
-
可以重写WndProc函数,来捕捉所有发生的窗口消息。这样,我们就可以"篡改"传入的消息,而人为的让窗口改变行为
-
- SendMessage:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。该函数是应用程序和应用程序之间进行消息传递的主要手段之一
- 函数原型:IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam);
- 参数
- hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口
- Msg:指定被发送的消息
- wParam:指定附加的消息指定信息
- IParam:指定附加的消息指定信息
- 返回值:返回值指定消息处理的结果,依赖于所发送的消息
- 备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。
- FindWindow:函数获得一个顶层窗体的句柄,该窗体的类名和窗体名与给定的字符串相匹配。这个函数不查找子窗体。在查找时不区分大写和小写
- 函数原型:int FindWindow(string lpClassName, string lpWindowName);</

本文介绍了如何在C# Winform应用中利用Windows API的SendMessage函数进行跨进程消息发送,并通过重写WndProc方法接收和处理消息。示例代码展示了如何定义自定义消息,找到目标窗口句柄,并发送消息。这对于实现不同窗口间的通信非常有用。

4882

被折叠的 条评论
为什么被折叠?



