C#不同程序间的访问怎么实现

发布网友

我来回答

4个回答

热心网友

消息分为很多种:
进程内部消息、进程间消息、局域网内部消息、Internet消息等等。

我想你是要问进程间消息吧?
一般C#提供了很多进程间的消息,比如消息队列(MSMQ),窗口消息(SendMessage),Remoting,文件介质等等。

消息队列:就是在一个进程中通过消息队列将消息发送给另外一个进程,他不依赖于另外一个进程的程序是否有窗口句柄,只要有进程句柄就可以了。但是需要操作系统安装了MSMQ组件才能实现这个功能。

窗口消息:其实跟你说的VB的SendMessage类似,在C#下所有的窗口都可以通过重写一个protected override void DefWndProc(ref System.Windows.Forms.Message m)方法,来实现接收窗口消息的功能。该方法并非Form类显示继承给子窗口的,所以大多时候子窗口是不知道有该方法的。但是你如果按照上面的方法生命,也可以接收到所有发送到该窗口的系统消息。那么也就可以通过SendMessage的形式发送给任意你能过获得到窗口句柄的C#窗口了。但是该方法的缺陷是要处理很多系统消息,因为他会把所有系统发送的消息都接收到。还有一个缺点就是传输的内容比较简单,对于传输复杂内容的对象不太方便。最大的好处是不需要安装其他Windows组件。

Remoting:虽然是一个网络调用的组件,但是也可以实现进程间通讯的作用。而且可以做到进程间对象调用,对于复杂业务的支持较好。但是该方法实现起来较为困难,需要设计一套完整的框架体系才能很好的发挥他的作用。一般在大型系统中可以使用。

文件介质:这种方式是一种非常原始的方式,就是发送方吧要发送的内容存放到某个约定的文件夹,接收方定时扫描,他们都去读写某个文件,达到通讯的作用。这种方法是很早之前没有很好的进程间消息传递方法的时候,常用的方式。最大的好处就是简单,最大的麻烦就是可控性较差。

当然还有很多方式,我可能一下子也记不起来。

对于局域网内部,跨电脑或者跨网络的通讯,那么就更多的方式了,比如WebService,Socket等等。

我想你要根据你的实际需求来确定使用那种通讯方式。

热心网友

关注!
我知道怎么调用程序,不知道怎么发送!
关注ing~

热心网友

使用管道
搜索关键字“ .net 管道”

热心网友

委托~!,,,

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com