问题描述
网页源代码如下:<inputclass="btn"name="un_submit"id="un_submit"type="button"value="提交"onclick="returnCheckForm(document.getElementById('form'),'','')">我用的代码:htmldocumentdoc=webbrowser1.document;HtmlElementCollectionbtt1=doc.GetElementsByTagName("input");foreach(HtmlElementdcinbtt1){if(dc.GetAttribute("id")=="un_submit"){dc.InvokeMember("click");}}请指教一下,谢谢
解决方案
解决方案二:
HtmlElementbtnSubmit=webBrowser1.Document.All["un_submit"];if(btnSubmit==null)return;btnSubmit.InvokeMember("click");
解决方案三:
我试了不行,仍然点不动
解决方案四:
没有分了,借楼主的帖子问个问题我弄了一个程序运行时间计数,1天都是好好的,运行了3天,今天居然出现倒计时了//运行时间计数器privatevoidtimer1_Tick(objectsender,EventArgse){longcurTickValue=Environment.TickCount;longdifference=curTickValue-compuTime;longcomputerDays,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秒这样,而是时间是在倒着走,请问是哪里计算错误了。
解决方案五:
引用3楼phuai007的回复:
没有分了,借楼主的帖子问个问题我弄了一个程序运行时间计数,1天都是好好的,运行了3天,今天居然出现倒计时了//运行时间计数器privatevoidtimer1_Tick(objectsender,EventArgse){longcurTickValue=Environment.TickCount;longdifference=curTickValue-compuTime;longcomputerDays,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秒这样,而是时间是在倒着走,请问是哪里计算错误了。
compuTime这个是啥?发出来看看
解决方案六:
引用楼主cyrzd的回复:
网页源代码如下:<inputclass="btn"name="un_submit"id="un_submit"type="button"value="提交"onclick="returnCheckForm(document.getElementById('form'),'','')">我用的代码:htmldocumentdoc=webbrowser1.document;HtmlElementCollectionbtt1=doc.GetElementsByTagName("input");foreach(HtmlElementdcinbtt1){if(dc.GetAttribute("id")=="un_submit"){dc.InvokeMember("click");}}请指教一下,谢谢
HtmlElementbtnSubmit=webBrowser1.Document.All["un_submit"];if(btnSubmit==null)return;btnSubmit.InvokeMember("onclick");试试
解决方案七:
引用4楼QQ234788028的回复:
compuTime这个是啥?发出来看看
longcompuTime;privatevoidForm1_Load(objectsender,EventArgse){compuTime=Environment.TickCount;}//运行时间计数器privatevoidtimer1_Tick(objectsender,EventArgse){longcurTickValue=Environment.TickCount;longdifference=curTickValue-compuTime;longcomputerDays,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()+"秒";}
解决方案八:
不行哦,兄弟,期待大神出现,谢谢你哈,那个按钮纹丝不动,看不到点击的样子
解决方案九:
HtmlElementCollectionbtt1=doc.GetElementsByTagName("input");改成:HtmlElementbtt1=doc.GetElementById(“input”);看我的部分代码://网页加载完毕,开始工作HtmlDocumenthtmlDoc=webBrowser.Document;Int32aa=0;Int32lc=Convert.ToInt32(textBox6.Text);//已发楼层Int32gs=Convert.ToInt32(textBox7.Text);//已发礼包个数Stringm=String.Empty;foreach(Stringkinarr){m=arr1[i];if(check(m)==false)//检测当前用户是否已经发送过了{HtmlElementinput=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调用windowsAPI来模拟鼠标点击了,参考这个例子:http://blog.csdn.net/chen504390172/article/details/18525823
解决方案十一:
引用3楼phuai007的回复:
没有分了,借楼主的帖子问个问题我弄了一个程序运行时间计数,1天都是好好的,运行了3天,今天居然出现倒计时了//运行时间计数器privatevoidtimer1_Tick(objectsender,EventArgse){longcurTickValue=Environment.TickCount;longdifference=curTickValue-compuTime;longcomputerDays,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秒这样,而是时间是在倒着走,请问是哪里计算错误了。
感觉计算没错,会不会是你的系统已经运行很多天了,然后超出了long类型的范围,所以得到的是负值
解决方案十二:
引用10楼landy1023的回复:
感觉计算没错,会不会是你的系统已经运行很多天了,然后超出了long类型的范围,所以得到的是负值
服务器是运行了很多天了,基本上很少重启过,怎么解决呢
解决方案十三:
引用11楼phuai007的回复:
Quote: 引用10楼landy1023的回复:
感觉计算没错,会不会是你的系统已经运行很多天了,然后超出了long类型的范围,所以得到的是负值服务器是运行了很多天了,基本上很少重启过,怎么解决呢
那么就不要用Environment.TickCount了,他是int类型,你又不经常重启,很容易超出范围的,直接用dateTime来计算时间好了DateTimet1;DateTimet2;privatevoidForm1_Load(objectsender,EventArgse){t1=DateTime.Now;}//运行时间计数器privatevoidtimer1_Tick(objectsender,EventArgse){t2=DateTime.Now;TimeSpants=t2-t1;label12.Text="运行:"+ts.Days+"天"+ts.Hours+"小时"+ts.Minutes+"分"+ts.Seconds+"秒";}
解决方案十四:
引用12楼landy1023的回复:
Quote: 引用11楼phuai007的回复:
Quote: 引用10楼landy1023的回复:
感觉计算没错,会不会是你的系统已经运行很多天了,然后超出了long类型的范围,所以得到的是负值服务器是运行了很多天了,基本上很少重启过,怎么解决呢
那么就不要用Environment.TickCount了,他是int类型,你又不经常重启,很容易超出范围的,直接用dateTime来计算时间好了DateTimet1;DateTimet2;privatevoidForm1_Load(objectsender,EventArgse){t1=DateTime.Now;}//运行时间计数器privatevoidtimer1_Tick(objectsender,EventArgse){t2=DateTime.Now;TimeSpants=t2-t1;label12.Text="运行:"+ts.Days+"天"+ts.Hours+"小时"+ts.Minutes+"分"+ts.Seconds+"秒";}
实在感谢,已经用上了,不过不好意思啊,我不能给你分。也多谢楼主,祝楼主的问题早日解决,不知道楼主用我发的那个方法有用没有,我做的那个项目,也是模拟点击的。
解决方案十五:
你蛮聪明的,晓得借别人的贴来问问题