HtmlElementCollection btt1 = doc.GetElementsByTagName("input"); 改成: HtmlElement btt1 = doc.GetElementById(“input”);看我的部分代码: //网页加载完毕,开始工作 HtmlDocument htmlDoc = webBrowser.Document; Int32 aa = 0; Int32 lc = Convert.ToInt32(textBox6.Text);//已发楼层 Int32 gs = Convert.ToInt32(textBox7.Text);//已发礼包个数 String m = String.Empty; foreach (String k in arr) { m = arr1[i]; if (check(m) == false)//检测当前用户是否已经发送过了 { HtmlElement input = htmlDoc.GetElementById(k); if (input != null) { aa = Convert.ToInt32(GetOffset(input).Y);//得到元素坐标 htmlDoc.Window.ScrollTo(0, aa - 360);//设置坐标 Delay(2000); if (MessageBox.Show("按是发送,按否跳过", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { input.InvokeMember("click");
额,如果btnSubmit.InvokeMember("click"); 不行的话,那么有可能是页面做了防止webBroswer自动点击的处理,那么只好用sendMessage调用windows API 来模拟鼠标点击了, 参考这个例子:http://blog.csdn.net/chen504390172/article/details/18525823
//运行时间计数器
private void timer1_Tick(object sender, EventArgs e)
{
long curTickValue = Environment.TickCount;
long difference = curTickValue - compuTime;
long computerDays, computerHours, computerMinutes, computerSeconds;
computerDays = (difference / (86400 * 999)) % 24;
computerHours = (difference / (3600 * 999)) % 24;
computerMinutes = (difference / (60 * 999)) % 60;
computerSeconds = (difference / 999) % 60;
label12.Text = "运行:" + computerDays.ToString() + "天" + computerHours.ToString() + "小时" + computerMinutes.ToString() + "分" + computerSeconds.ToString() + "秒";
}
正常是:运行1天10小时5分10秒,这样,结果今天看,成了:运行-22天2小时45分10秒这样,而是时间是在倒着走,请问是哪里计算错误了。
HtmlElement btnSubmit = webBrowser1.Document.All["un_submit"];
if (btnSubmit == null)
return;
btnSubmit.InvokeMember("onclick"); 试试
long compuTime;
private void Form1_Load(object sender, EventArgs e)
{
compuTime = Environment.TickCount;
}
//运行时间计数器
private void timer1_Tick(object sender, EventArgs e)
{
long curTickValue = Environment.TickCount;
long difference = curTickValue - compuTime;
long computerDays, computerHours, computerMinutes, computerSeconds;
computerDays = (difference / (86400 * 999)) % 24;
computerHours = (difference / (3600 * 999)) % 24;
computerMinutes = (difference / (60 * 999)) % 60;
computerSeconds = (difference / 999) % 60;
label12.Text = "运行:" + computerDays.ToString() + "天" + computerHours.ToString() + "小时" + computerMinutes.ToString() + "分" + computerSeconds.ToString() + "秒";
}
改成:
HtmlElement btt1 = doc.GetElementById(“input”);看我的部分代码:
//网页加载完毕,开始工作
HtmlDocument htmlDoc = webBrowser.Document;
Int32 aa = 0;
Int32 lc = Convert.ToInt32(textBox6.Text);//已发楼层
Int32 gs = Convert.ToInt32(textBox7.Text);//已发礼包个数
String m = String.Empty;
foreach (String k in arr)
{
m = arr1[i];
if (check(m) == false)//检测当前用户是否已经发送过了
{
HtmlElement input = htmlDoc.GetElementById(k);
if (input != null)
{
aa = Convert.ToInt32(GetOffset(input).Y);//得到元素坐标
htmlDoc.Window.ScrollTo(0, aa - 360);//设置坐标
Delay(2000);
if (MessageBox.Show("按是发送,按否跳过", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
input.InvokeMember("click");
参考这个例子:http://blog.csdn.net/chen504390172/article/details/18525823
感觉计算没错,会不会是你的系统已经运行很多天了,然后超出了long 类型的范围,所以得到的是负值
那么就不要用Environment.TickCount了,他是int 类型,你又不经常重启,很容易超出范围的,直接用dateTime来计算时间好了
DateTime t1;
DateTime t2;
private void Form1_Load(object sender, EventArgs e)
{
t1 = DateTime.Now;
}
//运行时间计数器
private void timer1_Tick(object sender, EventArgs e)
{
t2 = DateTime.Now;
TimeSpan ts= t2 - t1;
label12.Text = "运行:" + ts.Days + "天" + ts.Hours + "小时" + ts.Minutes + "分" + ts.Seconds + "秒";
}
那么就不要用Environment.TickCount了,他是int 类型,你又不经常重启,很容易超出范围的,直接用dateTime来计算时间好了
DateTime t1;
DateTime t2;
private void Form1_Load(object sender, EventArgs e)
{
t1 = DateTime.Now;
}
//运行时间计数器
private void timer1_Tick(object sender, EventArgs e)
{
t2 = DateTime.Now;
TimeSpan ts= t2 - t1;
label12.Text = "运行:" + ts.Days + "天" + ts.Hours + "小时" + ts.Minutes + "分" + ts.Seconds + "秒";
}
实在感谢,已经用上了,不过不好意思啊,我不能给你分。
也多谢楼主,祝楼主的问题早日解决,不知道楼主用我发的那个方法有用没有,我做的那个项目,也是模拟点击的。