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

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

这种写法你看一下

const int WM_COPYDATA = 0x004A;

[DllImport("User32dll", 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("User32dll", 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();

pStartInfoFileName = ApplicationStartupPath + "\\\\ZNZexe";

pStart();

ApplicationExit();

}

else

{

byte[] sarr = SystemTextEncodingDefaultGetBytes(thistextBox1Text);

int len = sarrLength;

COPYDATASTRUCT cds;

cdsdwData = (IntPtr)100;

cdslpData = thistextBox1Text;

cdscbData = len + 1;

SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds);

}

}

public struct COPYDATASTRUCT

{

public IntPtr dwData;//用户定义数据

public int cbData;//数据大小

[MarshalAs(UnmanagedTypeLPStr)]

public string lpData;//指向数据的指针

}

WinForm窗体自带了WndProc函数用来处理消息。窗体句柄可以用thisHandle来获得。你的SendMessage直接向窗体句柄发消息应该能被捕获到。

最后,因为WinForm窗体自带了WndProc函数,这里又来一个WndProc函数,大概会被认为了重写,所以窗体消息会发到你这来。

简单的做法:

向DLL注册句柄。

重载WndProc函数。在里面判断。

以上就是关于C# winform 两个exe 通信 我不同解决方案下的两个exe,如:A.exe,B.exe,我需要两个程序互相通信全部的内容,包括:C# winform 两个exe 通信 我不同解决方案下的两个exe,如:A.exe,B.exe,我需要两个程序互相通信、C#如何接收C++dll发送的消息、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9730951.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存