C# 如何实现跨应用传输消息

这个我参考了一篇文章,对其进行了修改。因为原链接是button触发的,我改为了定时器触发。
参考的文章链接:https://blog.csdn.net/winterye12/article/details/77370453
首先,对两个不同的APP之间进行定义。分为发送端和接收端。
发送端APP:FormA
接收端APP:FormB
发送端:

public partial class FormA : Form

{
   
    private const int WM_USER = 0x87D0;  //这个APP的自定义消息号
    
    [DllImport("User32.dll", EntryPoint = "SendMessage")]
   
    private static extern IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam); //发送消息函数。
    
    [DllImport("User32.dll", EntryPoint = "FindWindow")]
	 	 
	  public FormA()
    
    {
      
        InitializeComponent();
  
    }
	 	
	 	private void timer_Message_Tick(object sender, EventArgs e)    //定时器定时发送消息
    	{
       	 	int WINDOW_HANDLER;  
        	int msgNum = 11111111; //要传输的数据,也可以是变量
       		WINDOW_HANDLER = FindWindow(null, "接收端");//通过窗口标题,获得句柄
        	SendMessage(WINDOW_HANDLER, WM_USER, new IntPtr(msgNum), IntPtr.Zero);
    	}
}

接收端:

public partial class FormB : Form
{

    private const int WM_USER = 0x8060;  //自定义的接收端的号子,其实就像姓名牌一样。
    //原文此处与发送端用一样的号子,因为它只收,所以号子是什么无所谓。我这里改了一下
    
    public FormB
    {
        InitializeComponent();
        this.Text = "接收端";   //与发送端中的FindWindow中的内容对应
    }
    
     protected override void WndProc(ref Message m)   //重新函数,处理接收的信息
    {
        switch (m.Msg)
        {
            case 0x87D0:  //就是上述发送端的号子
                string message = m.WParam.ToString(); 
                textBox1.AppendText("接受到信息:" + message + "\r\n");   // + "\r\n"以实现换行
                break;
            default: break;  //实际上延展一下也可以同时接收多个 APP传输而来的消息
        }
        base.WndProc(ref m);
    }

}

接收端的效果:
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值