.net remoting 实现通用消息处理窗口

.net remoting 实现通用消息处理窗口


  • 实现机制是制作一个cmd窗口作为信息展示窗口,主程序将需要展示的信息抛出到cmd窗口显示,以此方式做到消息的展示。

以下是cmd窗口的代码,cmd窗体作为一个消息接收的server

 1  static void Main(string[] args)
 2         {
 3             try
 4             {
 5                 //声明一个TCP通道指定端口8085
 6                 TcpChannel channel = new TcpChannel(8085);
 7                 //注册通道
 8                 ChannelServices.RegisterChannel(channel, false);
 9                 //从哪个类,发出消息
10                 RemotingConfiguration.RegisterWellKnownServiceType(typeof(ToolFunction.ConsoleMessage), "ConsoleMessage", WellKnownObjectMode.SingleCall);
11                 System.Console.WriteLine("Server:Press Enter key to exit");
12                 //等待输入
13                 System.Console.ReadLine();
14             }
15             catch (Exception)
16             {
17                 throw;
18             }
19
20         }
  • 初始化client
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 using System.Runtime.Remoting.Channels.Tcp;
 5 using System.Runtime.Remoting.Channels;
 6 using System.Runtime.Remoting;
 7
 8 namespace ToolFunction
 9 {
10     public class RemoteMessage
11     {
12         public static IMessage obj = null;
26
27         /// <summary>
28         /// 初始化客户端
29         /// </summary>
30         public static void InitClient()
31         {
32             if (obj == null)
33             {
34                 TcpChannel channel = new TcpChannel();
35                 ChannelServices.RegisterChannel(channel, false);
36                 IMessage _obj = (IMessage)Activator.GetObject(typeof(IMessage), "tcp://localhost:8085/ConsoleMessage");
37                 obj = _obj;
38             }
39         }
40
41         /// <summary>
42         /// 发送消息
43         /// </summary>
44         /// <param name="p_strMess"></param>
45         public static void SendMessage(string p_strMess)
46         {
47             try
48             {
49                 if (obj == null)
50                 {
51                     Console.WriteLine("Could not locate TCP server");
52                 }
53                 obj.ShowMess(p_strMess);
54             }
55             catch (Exception ex)
56             {
57                 CommonFunction.WriteError(ex.ToString());
58             }
59         }
60     }
61 }
  • 此类要实现一个接口MarshalByRefObject只有实现此接口才能实现remoting操作
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4
 5 namespace ToolFunction
 6 {
 7     public interface IMessage
 8     {
 9         void ShowMess(string p_strMess);
10     }
11     public class ConsoleMessage : MarshalByRefObject, IMessage
12     {
13         #region IMessage 成员
14
15         public void ShowMess(string p_strMess)
16         {
17             Console.WriteLine(p_strMess);
18         }
19
20         #endregion
21     }
22 }
  • 调用示例
//打开cmd程序
string _strExePath = Application.StartupPath + @"\MessagePlatform.exe";
            Process.Start(_strExePath);
            RemoteMessage.InitClient();
  • 发送消息
RemoteMessage.SendMessage("测试消息" );
  • 最后 的样子是这样的
时间: 2025-01-04 05:02:51

.net remoting 实现通用消息处理窗口的相关文章

Winform应用程序实现通用消息窗口

记得我之前发表过一篇文章<Winform应用程序实现通用遮罩层>,是实现了透明遮罩的消息窗口,功能侧重点在动图显示+消息提醒,效果看上去比较的炫,而本篇我又来重新设计通用消息窗口,功能重点在于消息提醒.进度报告,当然如果大家时间,可以将两种相结合,那样就会更完美了,我这里仍是以实现功能为主,由于代码相对简单,我就直接贴上所有代码,大家可以直接复制到本地测试,若发现问题可自行改正或反馈给我,我来完善,谢谢! using System; using System.Collections.Gener

DIV/SPAN通用子窗口展现、关闭JS接口

子窗口通用接口,基于jQuery支持使用.目前设计时,使用的是1.7.2版.FF默认焦点未失去问题存在. HTML & JS: <html>     <head>         <title></title>         <script charset="GB2312" type="text/javascript" src="js/jquery-1.7.2.js"><

通用DW窗口查询功能

一 创建用户对象u_vst_search 二 初始化控件 uo_find.uf_init_dw( dw_1 ) 三 重写ue_search() 和ue_all()事件用来处理过滤功能 如重写ue_search()按选择的查询条件进行过滤 long ll_count dw_1.setredraw( false ) //先检索所有数据 ll_count = dw_1.retrieve( '1',"%" ) //再按条件过滤 dw_1.setfilter( as_condition) dw_

Q语言 我的命令库《通用》窗口命令功能函数源码

'---------------------窗口操作命令------------------------------------- Function window_move(窗口句柄, x, y) //移动窗口2500,0 将窗口移出屏幕,起到隐藏窗口作用 Call Plugin.Window.move(窗口句柄, 2500, 0) End Function Function window_shin(窗口句柄, x, y) Call Plugin.Window.move(窗口句柄, x, y)

Q语言 我的命令库《通用》窗口操作之绑定应用界面功能函数

---------绑定窗口函数---------------- --输出值 Hwnd ,Hwnd_0/绑定思路,取应用窗口界面中比较有特征的部们截图,pictname.bmp./以前台找图的方式点击,这样会激活成当前窗口,然后取当前活动窗口句柄,以此达到取hwnd数的目录,/利用上节的函数,取出该窗口的相关数据/因此此方法绑定窗口,前提是要先打开应用,并要求屏幕上能观察到特征图标,以利于点击激活窗口为当前窗口/*,点击的偏移量(偏移X, 偏移Y) 可以自行调试设定 Function window

第3章 窗口与消息_3.2面向对象的窗口类的封装

3.2.1 MFC单文档大致框架 (1)MFC类继承略图 (2) MFC单文档应用程序类层次结构图 CWinApp:应用程序类,每个应用程序有且只有一个继承于CWinApp的派生类对象 CWnd:是一个通用的窗口类,用于提供Windows中的所有通用特性.对话框和控件. (3)应用程序执行过程图 3.2.2 应用程序QWinApp的设计 //QWinApp.h文件 #include "stdAfx.h" class QWinApp { public: QWinApp(); ~QWinA

Winform应用程序实现通用遮罩层二

之前先后发表过:<Winform应用程序实现通用遮罩层>.<Winform应用程序实现通用消息窗口>,这两款遮罩层其实都是基于弹出窗口的,今天为大家分享一个比较简单但界面相对友好的另一种实现方案,废话不多说,直接进入主题. 一.实现思路(解决问题顺序): 透明遮罩: 1.实现可设置透明的Panel控件(MaskPanel): 2.Panel控件(MaskPanel)能够覆盖父容器(一般是当前窗体form对象)客户区区域(即:与父容器客户区区域大小相同),并处于最上层,保证父容器上的

浅析 Android 的窗口

一.窗口的概念 在开发过程中,我们经常会遇到,各种跟窗口相关的类,或者方法.但是,在 Android 的框架设计中,到底什么是窗口?窗口跟 Android Framework 中的 Window 类又是什么关系?以手机QQ 的主界面为例,如下图所示,上面的状态栏是一个窗口,手机QQ 的主界面自然是一个窗口,而弹出的 PopupWindow 也是一个窗口,我们经常使用的 Toast 也是一个窗口.像 Dialog,ContextMenu,以及 OptionMenu 等等这些都是窗口.这些窗口跟 W

Javascript学习--------详解window窗口对象

对话框: 警告对话框:alert(): 语法:window.alert(src)或者alert(src); 询问回答对话框:confirm(): 语法:window.confrim(question)或者confrim(question); 单击确认,返回true: 单击取消,返回false 提示对话框:prompt(): 语法:window.prompt([showtxt],[defaultTxt])或者prompt([showtxt],[defaultTxt]); 单击确认,返回输入的文本: