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

在VB中可以调用SendMessage函向已经获得句柄的程序发送信息。如何使用C#实现一个程序向另一个程序发送信息,并且可以引发事件。我的意思就是在C#中定义一个事件,可... 在VB中可以调用SendMessage函向已经获得句柄的程序发送信息。如何使用C#实现一个程序向另一个程序发送信息,并且可以引发事件。

我的意思就是在C#中定义一个事件,可以接受其他程序发送来的信息
展开
 我来答
yanshl
2008-12-11 · TA获得超过412个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:242万
展开全部
消息分为很多种:
进程内部消息、进程间消息、局域网内部消息、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等等。

我想你要根据你的实际需求来确定使用那种通讯方式。
skynnnn
2008-12-11 · TA获得超过2396个赞
知道小有建树答主
回答量:1137
采纳率:0%
帮助的人:635万
展开全部
关注!
我知道怎么调用程序,不知道怎么发送!
关注ing~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heavencloud
2008-12-11 · TA获得超过105个赞
知道小有建树答主
回答量:72
采纳率:100%
帮助的人:32.6万
展开全部
使用管道
搜索关键字“ .net 管道”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
容莎0Ek
2008-12-11 · 超过23用户采纳过TA的回答
知道答主
回答量:210
采纳率:0%
帮助的人:0
展开全部
委托~!,,,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式