实例介绍
【实例简介】
C#139邮箱发手机短信源码
【实例截图】
【核心代码】
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.Timers;
using mshtml;
using System.Net;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;//
namespace WindowsApplication42
{
public partial class Form2 : Form
{ HtmlDocument hdoc;
System.Timers.Timer _timer = new System.Timers.Timer();
public Form2()
{
InitializeComponent();
int _Interval = 100;
_timer.Enabled = true;
_timer.Interval = _Interval;
_timer.Elapsed = new ElapsedEventHandler(Timer_Elapsed);
}
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
string CurrTime = System.DateTime.Now.ToLongTimeString();
string s = "20:01:00";
if (CurrTime == s)
{
this.Invoke(new MethodInvoker(delegate
//this.Invoke(new MethodInvoker(() =>
{
string aaa = "123456";
string bbb = "123456";
IHTMLDocument3 aa = CorssDomainHelper.GetDocumentFromWindow(this.webBrowser1.Document.Window.Frames["miniLoginFrame"].DomWindow as IHTMLWindow2);
aa.getElementById("miniLogin_username").setAttribute("value", aaa, 0);
aa.getElementById("miniLogin_pwd").setAttribute("value", bbb, 0);
IHTMLElementCollection input = (IHTMLElementCollection)aa.getElementsByTagName("input");
foreach (IHTMLElement ht in input)
{
if (ht.getAttribute("type", 0).Equals("submit") != null)
{
ht.click();
}
}
}
)
);
}
}
private void Form2_Load(object sender, EventArgs e)
{
comboBox1.Text = "http://mail.10086.cn/";
comboBox1.Items.Add("http://p.www.xiaomi.com/zt/xm_account/loginfacade.html?third=http%253A%252F%252Forder.xiaomi.com%252Flogin%252Fcallback%253Ffollowup%253Dhttp%25253A%25252F%25252Fwww.xiaomi.com%2526sign%253DMWM0ZDg1YWE3ZDc4NGJjNzU0MDM4MmRiNzY0ZWY0MDJlYTVkODBlZA%252C%252C%26sid%3Deshop&sid=eshop&callback=http%253A%252F%252Forder.xiaomi.com%252Flogin%252Fcallback%253Ffollowup%253Dhttp%25253A%25252F%25252Fwww.xiaomi.com%2526sign%253DMWM0ZDg1YWE3ZDc4NGJjNzU0MDM4MmRiNzY0ZWY0MDJlYTVkODBlZA%252C%252C&sign=3C15pt35v9KK5SR8saFsKQ89uRo%253D&1382244002316");
comboBox1.Items.Add( "http://mail.10086.cn/");
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//定义html元素 通过Name获取控件值
// HtmlElement tbUserid = webBrowser1.Document.All["UserName"];
// HtmlElement tbPasswd = webBrowser1.Document.All["Password"];
//定义html元素 通过ID获取控件值 (用户名 密码 登录按钮) sendSmsBtn
HtmlElement tbUserid = webBrowser1.Document.GetElementById("txtUser");//通行证/手机号/别名
HtmlElement tbPasswd = webBrowser1.Document.GetElementById("txtPass");//密码
HtmlElement btnSubmit = webBrowser1.Document.GetElementById("loginBtn");//登 录
//三个元素其一为空返回 加载后才执行赋值 否则会出现为null值的崩溃错误
if (tbUserid == null || tbPasswd == null || btnSubmit == null)
{
return;
}
// MessageBox.Show("7");
//设置元素value属性值 (用户名 密码值)
tbUserid.SetAttribute("value", "1366498XXX2@139.com");//改成自己的邮箱
tbPasswd.SetAttribute("value", "12345678");//改成自己的密码
//执行元素的方法:如click submit
// MessageBox.Show("8");
//btnSubmit.InvokeMember("click");
hdoc = webBrowser1.Document;
}
class CorssDomainHelper
{
private static Guid IID_IWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046");
private static Guid IID_IWebBrowser2 = new Guid("D30C1661-CDAF-11D0-8A3E-00C04FC9E26E");
// Utility for IE cross domain access
// Returns null in case of failure.
public static IHTMLDocument3 GetDocumentFromWindow(IHTMLWindow2 htmlWindow)
{
if (htmlWindow == null)
{
return null;
}
// First try the usual way to get the document.
try
{
IHTMLDocument2 doc = htmlWindow.document;
return (IHTMLDocument3)doc;
}
catch (System.Runtime.InteropServices.COMException comEx)
{
// I think COMException won't be ever fired but just to be sure ...
}
catch (UnauthorizedAccessException)
{
}
catch (Exception ex)
{
return null;
}
// At this point the error was E_ACCESSDENIED because the frame contains a document from another domain.
// IE tries to prevent a cross frame scripting security issue.
try
{
// Convert IHTMLWindow2 to IWebBrowser2 using IServiceProvider.
IServiceProvider sp = (IServiceProvider)htmlWindow;
//Use IServiceProvider.QueryService to get IWebBrowser2 object.
Object brws = null;
//sp.QueryService(ref IID_IWebBrowserApp, ref IID_IWebBrowser2, out brws);
//// Get the document from IWebBrowser2.
//IWebBrowser2 browser = (IWebBrowser2)(brws);
//return (IHTMLDocument3)browser.Document;
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
return null;
}
}
//鼠标事件 因为我用的不多,所以其他参数没有写
private readonly int MOUSEEVENTF_LEFTDOWN = 0x0002;//模拟鼠标左键按下
private readonly int MOUSEEVENTF_MOVE = 0x0001;//模拟鼠标移动
private readonly int MOUSEEVENTF_LEFTUP = 0x0004;//模拟鼠标左键抬起
private readonly int MOUSEEVENTF_ABSOLUTE = 0x8000;//鼠标绝对位置
private readonly int MOUSEEVENTF_RIGHTDOWN = 0x0008; //模拟鼠标右键按下
private readonly int MOUSEEVENTF_RIGHTUP = 0x0010; //模拟鼠标右键抬起
private readonly int MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模拟鼠标中键按下
private readonly int MOUSEEVENTF_MIDDLEUP = 0x0040;// 模拟鼠标中键抬起
[DllImport("user32")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
private void button1_Click(object sender, System.EventArgs e)
{
HTMLDocument doc = (HTMLDocument)webBrowser1.Document.DomDocument;
for (int i = 0; i < webBrowser1.Document.Window.Frames.Count; i )
{
IHTMLDocument3 baiduDoc = CorssDomainHelper.GetDocumentFromWindow(webBrowser1.Document.Window.Frames[i].DomWindow as IHTMLWindow2);
if (baiduDoc != null && baiduDoc.documentElement != null && baiduDoc.documentElement.document != null)
{
IHTMLElementCollection linkss = ((HTMLDocument)(baiduDoc.documentElement.document)).links;
foreach (mshtml.IHTMLElement element in linkss)
{
//网址
}
IHTMLElementCollection el = ((HTMLDocument)(baiduDoc.documentElement.document)).getElementsByTagName("input");//
foreach (mshtml.IHTMLElement em in el)
{
//输入值
}
IHTMLElementCollection eel = ((HTMLDocument)(baiduDoc.documentElement.document)).getElementsByTagName("span");//
//遍历所有元素
foreach (mshtml.IHTMLElement eem in eel)
{
if (eem.innerText == "发送")//.InnerText == "发送"
{
MessageBox.Show(" 发送按钮:" eem.getAttribute("id"));
eem.click();//执行按钮
}
}
}
}
}
//public Point GetOffset(HtmlElement el)
//{
// //get element pos
// Point pos = new Point(el.OffsetRectangle.Left, el.OffsetRectangle.Top);
// //get the parents pos
// HtmlElement tempEl = el.OffsetParent;
// while (tempEl != null)
// {
// pos.X = tempEl.OffsetRectangle.Left;
// pos.Y = tempEl.OffsetRectangle.Top;
// tempEl = tempEl.OffsetParent;
// }
// return pos;
//}
private void button2_Click(object sender, System.EventArgs e)
{
////获取输入的URL
//string url = "http://p.www.xiaomi.com/zt/xm_account/loginfacade.html?third=http%253A%252F%252Forder.xiaomi.com%252Flogin%252Fcallback%253Ffollowup%253Dhttp%25253A%25252F%25252Fwww.xiaomi.com%2526sign%253DMWM0ZDg1YWE3ZDc4NGJjNzU0MDM4MmRiNzY0ZWY0MDJlYTVkODBlZA%252C%252C%26sid%3Deshop&sid=eshop&callback=http%253A%252F%252Forder.xiaomi.com%252Flogin%252Fcallback%253Ffollowup%253Dhttp%25253A%25252F%25252Fwww.xiaomi.com%2526sign%253DMWM0ZDg1YWE3ZDc4NGJjNzU0MDM4MmRiNzY0ZWY0MDJlYTVkODBlZA%252C%252C&sign=3C15pt35v9KK5SR8saFsKQ89uRo%253D&1382244002316";
//string url = "http://mail.10086.cn/";
////string url = "http://mail.163.com/";
string url = comboBox1.Text;
//创建http链接
//HttpWebRequest对象实例:该类用于获取和操作HTTP请求 var可改成HttpWebRequest
var request = (HttpWebRequest)WebRequest.Create(url); //创建WebRequest对象
// MessageBox.Show("1");
//HttpWebResponse对象实例:该类用于获取和操作HTTP应答 var可改成HttpWebResponse
var response = (HttpWebResponse)request.GetResponse(); //GetResponse:获取答复
// MessageBox.Show("2");
//构造数据流对象实例
Stream stream = response.GetResponseStream(); //GetResponseStream:获取应答流
// MessageBox.Show("3");
StreamReader sr = new StreamReader(stream); //从字节流中读取字符
// MessageBox.Show("4");
//从流当前位置读取到末尾并显示在WebBrower控件中
string content = sr.ReadToEnd();
// MessageBox.Show("5");
webBrowser1.ScriptErrorsSuppressed = true; //屏蔽错误信息 C# 系统组件
webBrowser1.DocumentText = content;
//webBrowser1.Navigate("http://p.www.xiaomi.com/zt/xm_account/loginfacade.html?third=http%253A%252F%252Forder.xiaomi.com%252Flogin%252Fcallback%253Ffollowup%253Dhttp%25253A%25252F%25252Fwww.xiaomi.com%2526sign%253DMWM0ZDg1YWE3ZDc4NGJjNzU0MDM4MmRiNzY0ZWY0MDJlYTVkODBlZA%252C%252C%26sid%3Deshop&sid=eshop&callback=http%253A%252F%252Forder.xiaomi.com%252Flogin%252Fcallback%253Ffollowup%253Dhttp%25253A%25252F%25252Fwww.xiaomi.com%2526sign%253DMWM0ZDg1YWE3ZDc4NGJjNzU0MDM4MmRiNzY0ZWY0MDJlYTVkODBlZA%252C%252C&sign=3C15pt35v9KK5SR8saFsKQ89uRo%253D&1382244002316");
}
private void button3_Click(object sender, System.EventArgs e)
{
HTMLDocument doc = (HTMLDocument)webBrowser1.Document.DomDocument;
for (int i = 0; i < webBrowser1.Document.Window.Frames.Count; i )
{
IHTMLDocument3 baiduDoc = CorssDomainHelper.GetDocumentFromWindow(webBrowser1.Document.Window.Frames[i].DomWindow as IHTMLWindow2);
if (baiduDoc != null && baiduDoc.documentElement != null && baiduDoc.documentElement.document != null)
{
//Thread.Sleep(10000);//稍候3秒
IHTMLElementCollection el = ((HTMLDocument)(baiduDoc.documentElement.document)).getElementsByTagName("input");//
//遍历所有元素
// int iii = 0;
foreach (mshtml.IHTMLElement em in el)
{
// MessageBox.Show(iii " id:" em.getAttribute("id") " value:" em.getAttribute("value") " innerText:" em.innerText " name:" em.getAttribute("name") " type:" em.getAttribute("type") " class:" em.getAttribute("class"));//class
em.setAttribute("value", "1366xxxx822,");
// MessageBox.Show("X:" em.offsetWidth " Y:" em.offsetHeight);//
var
xx = em.offsetLeft this.Left 350 webBrowser1.Left;//
var
yy = em.offsetTop this.Top 200 webBrowser1.Top;//
int x = int.Parse("" xx);//在()输入要点击的x位置
int y = int.Parse("" yy);//在()中输入要点击的y位置
//绝对位置
Rectangle rect = System.Windows.Forms.SystemInformation.VirtualScreen;
int width = rect.Width;//获取屏幕X大小
int height = rect.Height;//获取屏幕Y大小
// MessageBox.Show("X:" width " Y:" height);
mouse_event(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, x * 65535 / width, y * 65535 / height, 0, 0);//移动到需要点击的位置
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE , x * 65535 / width, y * 65535 / height, 0, 0);//点击
mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE , x * 65535 / width, y * 65535 / height, 0, 0);//抬起
//相对位置 指的是相对于当前鼠标的相对位置
//mouse_event(MOUSEEVENTF_MOVE, x, y, 0, 0);//移动
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);//点击
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);//抬起
}
}
}
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
string bbb = "1234";
IHTMLDocument3 aa = CorssDomainHelper.GetDocumentFromWindow(this.webBrowser1.Document.Window.Frames[2].DomWindow as IHTMLWindow2);
aa.getElementById("txtContent").setAttribute("value", bbb, 0);
}
}
private void button4_Click(object sender, System.EventArgs e)
{
HTMLDocument doc = (HTMLDocument)webBrowser1.Document.DomDocument;
for (int i = 0; i < webBrowser1.Document.Window.Frames.Count; i )
{
IHTMLDocument3 baiduDoc = CorssDomainHelper.GetDocumentFromWindow(webBrowser1.Document.Window.Frames[i].DomWindow as IHTMLWindow2);
if (baiduDoc != null && baiduDoc.documentElement != null && baiduDoc.documentElement.document != null)
{
IHTMLElementCollection linkss = ((HTMLDocument)(baiduDoc.documentElement.document)).links;
foreach (mshtml.IHTMLElement element in linkss)
{ // MessageBox.Show(ii " " element.getAttribute("id") " " element.getAttribute("type") " " element.getAttribute("href"));
//加入你的代码就可以了。
if (element.getAttribute("id") == "smsSend")
{
//MessageBox.Show(" 发信息:" element.getAttribute("id"));
element.click();//执行按钮
}
}
}
}
}
private void button5_Click(object sender, System.EventArgs e)
{
webBrowser1.Document.GetElementById("loginBtn").InvokeMember("Click");//按登录
}
private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
}
}
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论