C# winform 两个exe 通信 我不同解决方案下的两个exe,如:A.exe,B.exe,我需要两个程序互相通信?

比如在A.exe运行时,我采用了Process可以打开B.exe,在B里头我有一个TextBox1还有一个按钮,我打算实现输入TextBox1的内容后点击按钮,可以将信息... 比如在A.exe运行时,我采用了Process可以打开B.exe,在B里头我有一个TextBox1还有一个按钮,我打算实现输入TextBox1的内容后点击按钮,可以将信息传递给A里头的TextBox2,怎么做?多谢了。给一个实例,谢谢,我的邮箱:75314404@qq.com
A.exe代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Process p = new Process();p.StartInfo.FileName = "SEO.exe";p.Start();
}
}
}
SEO.exe(B.exe)
namespace SEO
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
展开
 我来答
火红包包
2011-06-21
知道答主
回答量:98
采纳率:0%
帮助的人:54.6万
展开全部
这种写法你看一下

const int WM_COPYDATA = 0x004A;

[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(
int hWnd, // handle to destination window
int Msg, // message
int wParam, // first message parameter
ref COPYDATASTRUCT lParam // second message parameter
);

[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern int FindWindow(string lpClassName, string
lpWindowName);

private void button1_Click(object sender, EventArgs e)
{
int WINDOW_HANDLER = FindWindow(null, "指南针优化软件");
if (WINDOW_HANDLER == 0)
{
Process p = new Process();
p.StartInfo.FileName = Application.StartupPath + "\\..\\ZNZ.exe";
p.Start();
Application.Exit();
}
else
{
byte[] sarr = System.Text.Encoding.Default.GetBytes(this.textBox1.Text);
int len = sarr.Length;
COPYDATASTRUCT cds;
cds.dwData = (IntPtr)100;
cds.lpData = this.textBox1.Text;
cds.cbData = len + 1;
SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds);
}
}

public struct COPYDATASTRUCT
{
public IntPtr dwData;//用户定义数据
public int cbData;//数据大小
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;//指向数据的指针
}
百度网友39df075
2011-06-20 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:120万
展开全部
获取B窗体的句柄,在A窗体通过SendMessage这个系统提供的API函数向B窗体发送消息。
或者有一个比较笨得方法,你用A窗体创建一个文件并将你需要在B窗体读取的信息写入,,在B窗体中去读取这个文件并获得指定的内容即可。
追问
你的这个方式SendMessage能不能给详细一点的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzyyxxaabbcc
2011-06-20 · TA获得超过3641个赞
知道大有可为答主
回答量:3542
采纳率:50%
帮助的人:3155万
展开全部
实时的处理方式可以考虑在程序中使用消息机制,接收到特定的消息时触发事件。
追问
我就是不知道怎么写,道理我知道,我发代码一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yaobing0687
2011-06-20 · TA获得超过988个赞
知道小有建树答主
回答量:1309
采纳率:0%
帮助的人:891万
展开全部
最简单的办法是:
点击B按钮,将需要传的值保存到Cookie(或session或数据库或文本中)
在a中设置Timer扫描,如果该cookie值改变,获取该值并显示
追问
你的这个问题我考虑过了,不过消耗系统资源太大,而且会出现文件占用的可能。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式