unity3d进程通信利用WM_COPYDATE和HOOK

本文介绍了如何在Unity3D中利用WM_COPYDATA消息和Hook技术实现进程间通信。作者通过sendMessage从Unity发送消息,并在接收端使用Hook来捕获和处理消息。代码示例包括发送端test1.cs和接收端test2.cs,强调了这种方法相对于内存共享的优势。文章还提醒读者注意版权问题,并提供了交流学习的Q群。
摘要由CSDN通过智能技术生成

我发现侵权的一个网站 只改了潦草的几个字就把我的文章复制粘贴过去了 是一个培训机构的网站 :http://www.newbieol.com/information/998.html  这种培训机构就是坑钱的 跟传销差不多基本学不到东西就是坑你的学费的 不知道有没有人知道这种培训机构的举报通道 举报他丫的 完全没有做人的底线

hello,最近用unity做了进程通信,应该是和c++的PC端实现通信,才开始一头雾水,后来实现了才知道好繁杂......先感谢对我提供帮助的百度,谷歌以及游戏圈的大大们。


在进程通信中很多方法,但是wm_copydate绝对要比别的什么内存共享好了许多。unity大部分用c#语言,c#本身Forms这个dll里面也提供了对windows消息的接收但是在unity中无法很好地使用System.Windows.Forms,所以在下面我的代码我用unity发送进程消息的是 user32.dll 中的sendMessage,对于接收则是用的hook(钩子)。下面代码是unity打包出来的exe的通信。就不和c++通信了,原理都一样。


整个过程要导入user32.dll ,所以在需要using System.Runtime.InteropServices;剩下需要引用什么添加什么,里面还有发送json数据以及许多细节的c#取地址读取地址,我也一并分享大家乐,吐舌头以后也要帮我哦.


发送端(利用sendMessage),test1.cs挂载在unity场景中


using System;
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
using System.Text;


public class test15 : MonoBehaviour
{
    #region
    public IntPtr m_hWnd;  
    /// <summary>
    /// 发送windows消息方便user32.dll中的SendMessage函数使用
    /// </summary>
    public struct COPYDATASTRUCT
    {
        public IntPtr dwData;
        public int cbData;
        public IntPtr lpData;
    }
    //user32.dll中的SendMessage
    [DllImport("user32.dll")]
    public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, ref COPYDATASTRUCT lParam);
    //user32.dll中的获得窗体句柄
    [DllImport("user32.dll")]
    public static extern IntPtr FindWindow(string strClassName, string strWindowName);
    //宏定义 
    private const ushort IPC_VER = 1;
    private const int IDT_ASYNCHRONISM = 0x0201;
    private const uint WM_COPYDATA = 0x004A;
    private const ushort IPC_CMD_GF_SOCKET = 1;
    private const ushort IPC_SUB_GF_SOCKET_SEND = 1;
    private const
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值