短信猫软件的实现(C#)<十一>软件实现(完结篇)

作者: admin 分类: 最新资讯 发布时间: 2022-09-04 12:09

发送短信 目标号码部分:用listview控件实现,添加按钮完成单个号码的添加

Form9是添加号码窗体 通过事件AddNumEvent完成号码等信息的传递

Form9中对应代码:

事件的定义:

这样即完成了listview的号码添加。

删除号码:

这是从listview控件中删除对应条目,完成手机号码删除。

另外还有号码导入功能,完成多个号码的添加,目前只能从excel中导入;而且需要满足格式要求。代码如下:

 1: private void button8_Click(object sender, EventArgs e)
 2: {
 3:  //xPath指示excel文件路径
 4:  string xPath = null;
 5:  OpenFileDialog openFileDialog1 = new OpenFileDialog();
 6:  openFileDialog1.Filter = "Excel Files(*.xls)|*.xls";
 7:  openFileDialog1.Title = "导入手机号码";
 8:  listView2.SelectedItems.Clear();
 9:  // Show the Dialog.
10:  // If the user clicked OK in the dialog and
11:  // a .CUR file was selected, open it.
12:  if (openFileDialog1.ShowDialog() == DialogResult.OK)
13:  {
14:  xPath = openFileDialog1.FileName;
15:  string strCon;
16:  strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xPath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
17:  OleDbConnection OleConn = new OleDbConnection(strCon);
18:  string sql = "SELECT * FROM [Sheet1$]";
19:  DataSet ds = new DataSet();
20:  try
21:  {
22:  OleConn.Open();
23:  OleDbDataAdapter da = new OleDbDataAdapter(sql, strCon);
24:  da.Fill(ds, "sheet1");
25:  OleConn.Close();
26:  }
27:  catch
28:  {
29:  MessageBox.Show("无法打开!\n请关闭其他打开此文件的程序后再试");
30:  }
31:  DataTable dt = ds.Tables[0];
32:  try
33:  {
34:  foreach (DataRow row in dt.Rows)
35:  {
36:  string str = row["手机号码"].ToString();
37:  if (Regex.IsMatch(str, @"^(1[3|5|8][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])$"))
38:  {
39:  ListViewItem lvi = new ListViewItem(str);
40:  lvi.SubItems.Add(row["姓名"].ToString());
41:  lvi.SubItems.Add(row["备注"].ToString());
42:  listView2.Items.Add(lvi);
43:  }
44:  else
45:  {
46:  MessageBox.Show("表格第二列不是手机号码或是有错误号码!\n请检查后再试");
47:  break;
48:  }
49:  }
50:  }
51:  catch
52:  {
53:  MessageBox.Show("程序支持文件为前三列都有内容的xls表格\n第一列“姓名”,第二列“手机号码”,第三列“备注”");
54:  }
55:  }
56:  
57: }

excel文件第一行前三列容:第一列“姓名”,第二列“手机号码”,第三列“备注”,这样才能正常导入号码。

发送部分,类 MsgList负责存储要发送的短信及目的号码,对多存储255个号码(同一条短信)

下面是发送按钮的函数,首先判断字数及号码是否符合规范,上一条是否发送完成(群发 多个号码一条短信)如果完成,则准备发送:更改进度条和前面标签控件的相应属性,以给用户指示发送的状态。最后创建另外线程发送短信。

新建线程对应的函数:

发送一条或是失败、完成均调用SendOneMsg指向的函数OnSendOneMsg

OnSendOneMsg函数:

判断发送一条,或者失败,或者完成而改变控件属性,通知用户短信发送的当前状态。

这是对应委托和回调的声明,两个参数object sender, GSMEventArgs ge传递相关信息。

至此发送窗体部分完成。

标签云