基本信息
源码名称:C# 进程间的通信 示例
源码大小:0.08M
文件格式:.rar
开发语言:C#
更新时间:2017-11-17
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
两个不同的 winform应用程序之间通信 示例源码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace Sender
{
public partial class frmSender : Form
{
public struct COPYDATASTRUCT
{
public IntPtr dwData;
public int cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
//Win32 API函数
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(int hWnd, int Msg, int wParam, ref COPYDATASTRUCT lParam);
[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern int FindWindow(string lpClassName, string lpWindowName);
private IntPtr ip = IntPtr.Zero;
const int WM_COPYDATA = 0x004A;
public frmSender()
{
InitializeComponent();
}
private void btnSend_Click(object sender, EventArgs e)
{
int hWnd = FindWindow(null, @"消息接收者");//Receiver
if (hWnd == 0)
{
MessageBox.Show("555,未找到消息接受者!");
}
else
{
byte[] sarr = System.Text.Encoding.Default.GetBytes(txtString.Text);
int len = sarr.Length;
COPYDATASTRUCT cds;
int n;
if (int.TryParse(txtInt.Text.Trim(), out n))
{
//为数字
if (txtInt.Text.Trim() == "" | txtInt.Text.Trim() == null)
{ cds.dwData = (IntPtr)100; }
else
cds.dwData = (IntPtr)Convert.ToInt16(txtInt.Text);//可以是任意值
}
else
{
//非数字
cds.dwData = (IntPtr)999;
}
//cds.dwData = (IntPtr)100;
cds.cbData = len 1;//指定lpData内存区域的字节数
cds.lpData = txtString.Text;//发送给目标窗口所在进程的数据
SendMessage(hWnd, WM_COPYDATA, 0, ref cds);
}
}
}
}