我想将一条消息从Windows服务传递到已经运行的Windows桌面应用程序.我在Windows服务上实现了一个计时器.在一段时间之后,服务向Windows应用程序发送消息.服务或发件人代码如下:System.Diagnostics.Process[] lProcs...
![](https://oss.womengda.net/imgfile/2309/1E39A224R1F-2cL.jpg)
我想将一条消息从Windows服务传递到已经运行的Windows桌面应用程序.我在Windows服务上实现了一个计时器.在一段时间之后,服务向Windows应用程序发送消息.
服务或发件人代码如下:
System.Diagnostics.Process[] lProcs = System.Diagnostics.Process.GetProcessesByName("TestProcess2");
if (lProcs.Length > 0)
{
IntPtr handle = lProcs[0].MainWindowHandle;
if (handle != IntPtr.Zero)
SendMessage(handle, 232, IntPtr.Zero, IntPtr.Zero);
}
和windows桌面应用程序(接收器)代码如下:
protected override void WndProc(ref Message m)
{
if (m.Msg == 232)
{
MessageBox.Show("Received");
}
else
{
base.WndProc(ref m);
}
}
当两个进程都是windows桌面应用程序时,上面的代码工作正常.当我使用Windows服务作为发件人时,Windows桌面应用程序进程无法接收消息.你能帮我吗?
解决方法:
服务和桌面应用程序在两个不同的Window Station中运行.出于安全原因,无法在单独的Window Station中运行的应用程序之间发送窗口消息.
为了在服务和桌面应用程序之间进行通信,您必须使用某种进程间通信方法(良好的可能性是套接字,命名管道,DCOM等)或在其中一个上运行的某些框架,例如远程处理或者WCF.
本文标题为:如何使用c#将消息从Windows服务传递到Windows桌面应用程序?
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- user32.dll 函数说明小结 2022-12-26
- 如何使用C# 捕获进程输出 2023-03-10
- Oracle中for循环的使用方法 2023-07-04
- Unity3D实现渐变颜色效果 2023-01-16
- Unity Shader实现模糊效果 2023-04-27
- .NET CORE DI 依赖注入 2023-09-27
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- c# 模拟线性回归的示例 2023-03-14