using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
using
System.Security.Cryptography;
using
System.Web;
namespace
电信查询
{
public
partial
class
Form1 : Form
{
//
WebService引用
private
objTele.Service1SoapClient objtele
=
new
电信查询.objTele.Service1SoapClient();
//
当前查询号码
private
string
nowtnum
=
""
;
//
当前查询ID
private
string
nowtid
=
""
;
//
当前用户余额
private
string
nowtmoney
=
""
;
//
当前用户名称
private
string
nowtname
=
""
;
//
上一个用户名
private
string
oldtname
=
""
;
//
上一个查询号码
private
string
oldtnum
=
""
;
//
上一个查询ID
private
string
oldtid
=
""
;
//
上一用户余额
private
string
oldtmoney
=
""
;
//
刷新页面次数
private
int
islock
=
0
;
public
Form1()
{
InitializeComponent();
}
private
void
tspstart_Click(
object
sender, EventArgs e)
{
if
(cbbtime.Text
!=
""
)
{
if
(tspstart.Text
==
"
开始查询
"
)
{
timer1.Interval
=
Convert.ToInt32(cbbtime.Text.ToString().Trim());
timer1.Enabled
=
true
;
tspstart.Text
=
"
停止查询
"
;
}
else
{
tspstart.Text
=
"
开始查询
"
;
timer1.Enabled
=
false
;
timer2.Enabled
=
false
;
}
}
else
{
MessageBox.Show(
"
请先设定查询时间间隔
"
,
"
错误提示
"
, MessageBoxButtons.OK, MessageBoxIcon.Error);
return
;
}
}
private
void
cbbtime_SelectedIndexChanged(
object
sender, EventArgs e)
{
if
(cbbtime.Text
!=
""
)
{
timer1.Interval
=
Convert.ToInt32(cbbtime.Text.ToString().Trim());
}
}
private
void
Form1_Load(
object
sender, EventArgs e)
{
webpage.Url
=
new
Uri(
"
http://www.1065921611.com/
"
);
lvorder.Columns.Add(
"
编号
"
,
40
);
lvorder.Columns.Add(
"
号码
"
,
80
);
lvorder.Columns.Add(
"
姓名
"
,
80
);
lvorder.Columns.Add(
"
用户余额
"
,
80
);
lvorder.Columns.Add(
"
状态
"
,
120
);
lvorder.Columns.Add(
"
时间
"
,
120
);
lvorder.GridLines
=
true
;
//
显示表格线
lvorder.View
=
View.Details;
//
显示表格细节
lvorder.HeaderStyle
=
ColumnHeaderStyle.Clickable;
//
对表头进行设置
lvorder.FullRowSelect
=
true
;
//
是否可以选择行
cbbtime.Text
=
"
5000
"
;
this
.Text
=
"
电信查询
"
;
}
private
void
timer1_Tick(
object
sender, EventArgs e)
{
string
strtele
=
""
;
try
{
//
从数据库中查询一条等待查询的数据
strtele
=
objtele.selectOneSelectStratMobile(Encrypt(),
"
2
"
);
if
(strtele
!=
""
)
{
string
[] stroder
=
strtele.Split(
new
string
[] {
"
_
"
}, StringSplitOptions.RemoveEmptyEntries);
if
(stroder[
0
]
!=
"
0
"
&&
stroder[
1
]
!=
"
0
"
)
{
try
{
HtmlDocument doc
=
webpage.Document.Window.Frames[
1
].Document.Window.Frames[
3
].Document.Window.Frames[
0
].Document;
HtmlElement telenum
=
doc.All[
"
chargePhone
"
];
HtmlElement submit
=
doc.GetElementsByTagName(
"
a
"
)[
0
];
nowtid
=
stroder[
0
].ToString().Trim();
nowtnum
=
stroder[
1
].ToString().Trim();
nowdo.Text
=
"
正在查询用户:
"
+
nowtnum.ToString()
+
"
信息
"
;
if
(telenum
==
null
||
submit
==
null
)
{
nowdo.Text
=
"
网络受阻查询用户:
"
+
nowtnum.ToString()
+
"
信息失败
"
;
databind(nowtid.ToString(), nowtnum.ToString(),
"
查询失败
"
,
"
0
"
,
"
网络受阻,查询失败
"
,
9
);
return
;
}
telenum.SetAttribute(
"
value
"
, stroder[
1
].ToString());
submit.InvokeMember(
"
click
"
);
timer1.Enabled
=
false
;
timer2.Enabled
=
true
;
timer2.Interval
=
2000
;
islock
=
0
;
}
catch
(Exception)
{
return
;
}
}
}
}
catch
(Exception)
{
throw
;
}
}
//
页面加载完成时发生
private
void
webpage_DocumentCompleted(
object
sender, WebBrowserDocumentCompletedEventArgs e)
{
}
//
页面开始刷新时执行
private
void
webpage_Navigated(
object
sender, WebBrowserNavigatedEventArgs e)
{
}
///
<summary>
///
加密数据
///
</summary>
///
<returns></returns>
public
static
string
Encrypt()
{
string
Text
=
"
asuygp834p8934g8ye893rehfvasu78698734r
"
;
string
sKey
=
"
as4564656uygp834p893
"
;
DESCryptoServiceProvider des
=
new
DESCryptoServiceProvider();
byte
[] inputByteArray;
inputByteArray
=
Encoding.Default.GetBytes(Text);
des.Key
=
ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey,
"
md5
"
).Substring(
0
,
8
));
des.IV
=
ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey,
"
md5
"
).Substring(
0
,
8
));
System.IO.MemoryStream ms
=
new
System.IO.MemoryStream();
CryptoStream cs
=
new
CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray,
0
, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret
=
new
StringBuilder();
foreach
(
byte
b
in
ms.ToArray())
{
ret.AppendFormat(
"
{0:X2}
"
, b);
}
return
ret.ToString();
}
private
void
timer2_Tick(
object
sender, EventArgs e)
{
if
(islock
<
10
&&
!
timer1.Enabled)
{
if
(islock
==
0
||
islock
==
3
||
islock
==
6
)
{
try
{
HtmlDocument doc
=
webpage.Document.Window.Frames[
1
].Document.Window.Frames[
3
].Document.Window.Frames[
1
].Document;
HtmlElement subref
=
doc.GetElementsByTagName(
"
a
"
)[
0
];
if
(subref
==
null
)
{
HtmlDocument doc1
=
webpage.Document.Window.Frames[
1
].Document.Window.Frames[
3
].Document.Window.Frames[
1
].Document;
subref
=
doc1.GetElementsByTagName(
"
a
"
)[
0
];
}
subref.InvokeMember(
"
click
"
);
}
catch
(Exception)
{
return
;
}
}
else
{
try
{
HtmlDocument doc
=
webpage.Document.Window.Frames[
1
].Document.Window.Frames[
3
].Document.Window.Frames[
1
].Document;
string
userresult
=
doc.GetElementsByTagName(
"
div
"
)[
6
].GetElementsByTagName(
"
ol
"
)[
0
].InnerText.ToString();
string
[] userinfo
=
userresult.Split(
new
string
[] {
"
"
}, StringSplitOptions.RemoveEmptyEntries);
if
(userinfo.Length
==
4
)
{
if
(userinfo[
2
].ToString().Trim()
==
nowtnum.ToString())
{
timer1.Enabled
=
true
;
timer2.Enabled
=
false
;
nowtname
=
userinfo[
1
].ToString().Trim();
nowtmoney
=
userinfo[
3
].ToString().Trim();
oldtid
=
nowtid.ToString();
oldtmoney
=
nowtmoney;
oldtname
=
nowtname;
oldtnum
=
nowtnum;
nowdo.Text
=
"
查询用户:
"
+
nowtnum.ToString()
+
"
信息成功
"
;
databind(nowtid, nowtnum, nowtname, nowtmoney,
"
查询成功
"
,
8
);
}
}
}
catch
(Exception)
{
islock
++
;
return
;
}
}
islock
++
;
}
else
{
nowdo.Text
=
"
查询用户:
"
+
nowtnum.ToString()
+
"
信息失败
"
;
nowtname
=
"
查询失败
"
;
nowtmoney
=
"
0
"
;
oldtid
=
nowtid.ToString();
oldtmoney
=
nowtmoney;
oldtname
=
nowtname;
oldtnum
=
nowtnum;
timer1.Enabled
=
true
;
timer2.Enabled
=
false
;
databind(nowtid, nowtnum,
"
无号码信息
"
,
"
0
"
,
"
无响应查询失败
"
,
9
);
}
}
///
<summary>
///
联通充值数据信息状态更新
///
</summary>
///
<param name="ormd">
信息编号
</param>
///
<param name="ormn">
号码
</param>
///
<param name="ormoney">
金额
</param>
///
<param name="state">
状态
</param>
///
<param name="n">
状态标识
</param>
private
void
databind(
string
ormd,
string
ormn,
string
name,
string
money,
string
state,
int
n)
{
bool
id
=
false
;
objTele.SelectTelecom sTele
=
new
电信查询.objTele.SelectTelecom();
sTele.sctId
=
Convert.ToInt32(ormd.Trim());
sTele.sctName
=
name;
sTele.sctExecTime
=
DateTime.Now;
sTele.sctState
=
n;
sTele.sctRemainAmount
=
Convert.ToDecimal(money.ToString());
try
{
id
=
objtele.updateOneSelectTelecom(Encrypt(), sTele);
if
(
!
id)
id
=
objtele.updateOneSelectTelecom(Encrypt(), sTele);
}
catch
(Exception)
{
}
ListViewItem[] listViewItem
=
new
ListViewItem[
1
];
listViewItem[
0
]
=
new
ListViewItem(
new
string
[] { ormd, ormn, name, money
+
"
元
"
, state,DateTime.Now.ToString() });
lvorder.Items.AddRange(listViewItem);
}
}
}