知识大全 用C#编写发手机中文短信息Windows服务

Posted 文件

篇首语:厌伴老儒烹瓠叶,强随举子踏槐花。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用C#编写发手机中文短信息Windows服务相关的知识,希望对你有一定的参考价值。

用C#编写发手机中文短信息Windows服务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近在电脑城上买了一根NOKIA 的数据线 玩了几天改LOGO 改铃声后也将数据线扔在一边 直到前几天在Http://oxygensofare 上看到有发手机短信息的二次开发控件 才想起多日不用的数据线 而且最近在学C# 觉得用C#做个发短信息的程序也不错 经过多天的测试 终于实现用电脑+数据线+手机的模式 实现在单位的局域网平台上发送短信息了

  由于单位使用到发手机短信息的地方有很多 可能是从网页 可能是OUTLOOK中的窗体 也可能是某台非Windows操作系统的主机的某个系统 所以经过思考探讨 觉得最好的解决方案是采用Windows的 服务 定时从一个目录中固定格式的文本文件中读取出相应的信息 发送出去 而其它客户端只需往该目录写入文本信息即可 思路定下来后就让我们开始吧!

  先交待一下开发平台 Windows Advance Server操作系统 Visual Studio Net Oxygen Sms ActiveX Control V (Share Ware) Nokia 手机通过数据线接在 上 运行Visual Studio Net 新建一个C#的项目 选择 Windows Server 类型的项目 命名为 SmsServer 在Server 的设计画面 将 ServerName 命名为 SmsServer 点击 视图设计器按钮 切换到设计画面 在 Windows Forms 工具箱中拖一时钟控件 命名为 SmsTimer 在 Components 工具箱中拖一 EventLog 控件 命名为 eventLog 在 项目 菜单中点击 添加引用 选择 页 浏览到安装Oxygen Sms ActiveX Control V 程序的目录 找到SMSControl ocx添加到 选定的组件 中

  将Server cs代码替换为

using System; using System Collections; using System ComponentModel; using System Data; using System Diagnostics; using System ServiceProcess; using System IO; using System Text ;

namespace SmsServer public class SmsServer : System ServiceProcess ServiceBase private System Timers Timer SmsTimer; private System Diagnostics EventLog eventLog ; public O SMSXControl O SMSX SmsX ;//定义手机短信对象

/// <summary> /// Required designer variable /// </summary> private System ComponentModel Container ponents = null;

public SmsServer() // This call is required by the Windows Forms Component Designer InitializeComponent();

// TODO: Add any initialization after the InitComponent call

// The main entry point for the process static void Main() System ServiceProcess ServiceBase[] ServicesToRun;

// More than one user Service may run within the same process To add // another service to this process change the following line to // create a second service object For example // // ServicesToRun = New System ServiceProcess ServiceBase[] new Service () new MySecondUserService(); // ServicesToRun = new System ServiceProcess ServiceBase[] new SmsServer() ;

System ServiceProcess ServiceBase Run(ServicesToRun);

/// <summary> /// Required method for Designer support do not modify /// the contents of this method with the code editor /// </summary> private void InitializeComponent() this SmsTimer = new System Timers Timer(); this eventLog = new System Diagnostics EventLog(); ((System ComponentModel ISupportInitialize)(this SmsTimer)) BeginInit(); ((System ComponentModel ISupportInitialize)(this eventLog )) BeginInit(); // // SmsTimer // this SmsTimer Enabled = true; this SmsTimer Elapsed += new System Timers ElapsedEventHandler(this SmsTimer_Elapsed); // // SmsServer // this ServiceName = SmsServer ; ((System ComponentModel ISupportInitialize)(this SmsTimer)) EndInit(); ((System ComponentModel ISupportInitialize)(this eventLog )) EndInit();

/// <summary> /// Clean up any resources being used /// </summary> protected override void Dispose( bool disposing ) if( disposing ) if (ponents != null) ponents Dispose(); base Dispose( disposing );

/// <summary> /// Set things in motion so your service can do its work /// </summary> protected override void OnStart(string[] args) // TODO: Add code here to start your service //开始服务时初始化手机 SmsX = new O SMSXControl O SMSXClass (); SmsX ConnectionMode = ; //联线类型cable SmsX ComNumber = ; //联接端口为 SmsX Model = ; //手机类型 SmsX Open (); //联接手机 SmsX SetSMSCNumber ( + );//信息中心号码

/// <summary> /// Stop this service /// </summary> protected override void OnStop() // TODO: Add code here to perform any tear down necessary to stop your service SmsX Close ();

private void SmsTimer_Elapsed(object sender System Timers ElapsedEventArgs e) //当f:\\sms\\data\\filetosend有文件时 先关闭时钟 将其发送出去 并删除掉文件再启动时钟 this SmsTimer Enabled =false;

//目录对象 DirectoryInfo cd = new System IO DirectoryInfo( F:\\\\Sms\\\\Data\\\\FileToSend ); //数据库记录变量 string rsId; string rsPhoneNum; string rsSmsText;

string StrSql;

//首先 在当前目录中列举当前的所有SMS文件 foreach(FileInfo FileSend in cd GetFiles ()) try //依次打开每个文件读取文件内容 FileStream fs = new FileStream (cd FullName + \\\\ + FileSend Name FileMode Open FileAccess Read ); StreamReader sr; sr = new StreamReader(fs UnicodeEncoding GetEncoding ( GB )); rsId = FileSend Name ToString (); rsId = rsId Replace ( sms ); rsId = rsId Trim (); rsPhoneNum = sr ReadLine (); rsPhoneNum = rsPhoneNum Trim (); if (rsPhoneNum Length > ) rsPhoneNum = rsPhoneNum Substring ( ); rsSmsText = sr ReadToEnd(); rsSmsText = rsSmsText Trim (); if (rsSmsText Length > ) rsSmsText Substring ( ); fs Close (); sr Close ();

//发送短信息 SmsX SendUnicodeSMSMessage (rsPhoneNum ToString () rsSmsText ToString () false );

//备份并删除文件 FileSend CopyTo ( F:\\\\Sms\\\\Data\\\\HadBeenSend\\\\ + FileSend Name true); FileSend Delete (); catch(System Exception E) //出错写LOG文件 eventLog WriteEntry (E Message ToString ()); //重新启动时钟 this SmsTimer Enabled =true;   在 Server cs切换设计画面 在属性窗口下点击 Add Installer 系统自动增加ProjectInstaller cs文件 点击serviceInstaller 设置 Server Name 设置为 SmsServer 点击 serviceProcessInstaller 设置Account为 LocalSystem 选择菜单 生成 中的 生成SmsServer 改正可能有的错误 进行DOS命令行 进行项目目录的\\bin\\debug目录下 执行 installutil SmsServer 如果找不到installutil程序 就先Path一下 这时 在管理工具的 服务 下可以找到 SmsServer 服务了 启动该服务 这里默认源为目录F:\\Sms\\Data\\FileToSend 如果这个目录有 SMS文件 就读取其第一行为发送的手机号码 第二行到文本结束为短信息内容 然后发送短信息 再将文本备份到F:\\Sms\\Data\\HadBeenSend\\

  让我们再回头看一下Server cs中的代码 首先在命令空间要增加 using System IO; using System Text ; 方便处理文件及文本对象 在命名类时 public class SmsServer : System ServiceProcess ServiceBase private System Timers Timer SmsTimer; private System Diagnostics EventLog eventLog ; public O SMSXControl O SMSX SmsX ;//定义手机短信对象 引用Oxygen控件中的定义SmsX 对象 然后在启动服务时初始化手机对象 protected override void OnStart(string[] args) // TODO: Add code here to start your service //开始服务时初始化手机 SmsX = new O SMSXControl O SMSXClass (); SmsX ConnectionMode = ; //联线类型cable SmsX ComNumber = ; //联接端口为 SmsX Model = ; //手机类型 SmsX Open (); //联接手机 SmsX SetSMSCNumber ( + );//信息中心号码

cha138/Article/program/net/201311/15784

相关参考

知识大全 使用C# 创建 Windows 服务

使用C#创建Windows服务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Visual C#中调用Windows服务初探

VisualC#中调用Windows服务初探  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Wi

知识大全 c#中重定向windows控制台程序的输出信息

  这个问题来自社区提问代码保留一份用来以后回答      usingSystem;usingSystemComponentModel;usingSystemWindowsForms;namespac

知识大全 用C#编写ActiveX控件

用C#编写ActiveX控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!首先建立一个WinFor

知识大全 用C#做Windows Services

用C#做WindowsServices  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Windo

知识大全 用C#代码编写的SN快速输入工具

用C#代码编写的SN快速输入工具  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一般软件都要输入

知识大全 用C#开发第一个WINDOWS应用程序

用C#开发第一个WINDOWS应用程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一创建工程  

知识大全 用C#编写获取远程IP,MAC的方法

用C#编写获取远程IP,MAC的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果要想获得

知识大全 用Visual C#调用Windows API函数

用VisualC#调用WindowsAPI函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  A

知识大全 用JSP编写通用信息发布程序

用JSP编写通用信息发布程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  信息发布界面  提供