您的位置:首页 > 编程语言 > C#

C# WinForm Webbrowser 模拟登陆 打卡

2011-12-03 04:49 183 查看
根据需求,完成了自动登录打卡的功能,现分享主要代码。

有不足的地方请指教!

读取配置文件,获取要登录考勤的帐户和密码,为了防止自己的用户名和密码是明文,做了加密解密处理。

private void Form1_Load(object sender, EventArgs e)
{
_strFlag = ConfigurationManager.AppSettings[_strConfigPar1] as string;
_strNetUserName = ConfigurationManager.AppSettings[_strConfigPar2] as string;
_strNetPassword = ConfigurationManager.AppSettings[_strConfigPar3] as string;

if (_strNetUserName != null && _strNetPassword != null)
{
doDecrypt(_strNetUserName, _strNetPassword);
webBrowser1.Navigate(_strLoginUrl);
_blFlg = false;
}
else
{
MessageBox.Show(_strErrorMessage);
Close();
}
}

由于使用了WebBrowser,所以有以下代码。

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlDocument doc = webBrowser1.Document;
try
{
if (doc.Url.ToString() != "" && _strLoginUrl.Equals(doc.Url.ToString()))
{
string strName = string.Empty;
string strPass = string.Empty;

HtmlElement heForm = doc.GetElementById("LoginForm");
HtmlElement heSubmit = doc.All["loginButton"];

strName = heForm.Children[2].GetElementsByTagName("INPUT")[0].Name;
strPass = heForm.Children[2].GetElementsByTagName("INPUT")[1].Name;
HtmlElement heUsername = doc.All[strName];
HtmlElement hePassword = doc.All[strPass];

heUsername.SetAttribute("value", _strNetUserName);
hePassword.SetAttribute("value", _strNetPassword);

heSubmit.InvokeMember("click");
}
else if (!_blFlg && doc.Url.ToString() != "" && _strPressUrl.Equals(doc.Url.ToString()))
{
HtmlElement heLink = doc.GetElementsByTagName("A")[0];
heLink.InvokeMember("onclick");
_blFlg = true;
}
}
catch
{
return;
}
}


画面上有加密的点击按钮,可以根据需求加密生成的配置文件。

private static void SaveConfig(string ConnenctionString, string strKey)
{
XmlDocument doc = new XmlDocument();
//获得配置文件的全路径
string strFileName = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
doc.Load(strFileName);
//找出名称为“add”的所有元素
XmlNodeList nodes = doc.GetElementsByTagName("add");
for (int i = 0; i < nodes.Count; i++)
{
//获得将当前元素的key属性
XmlAttribute att = nodes[i].Attributes["key"];
//根据元素的第一个属性来判断当前的元素是不是目标元素
if (att.Value == strKey)
{
//对目标元素中的第二个属性赋值
att = nodes[i].Attributes["value"];
att.Value = ConnenctionString;
break;
}
}
//保存上面的修改
doc.Save(strFileName);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: