最近做了个回帖工具,大家看看有什么毛病
新手第一次做项目,以前学校的都是和同学一起做的,这次可以算独立完成,不会的问百度,大多数功能都实现了
现在没有解决的就是界面循环回帖的假死,和操作失误提示不会写,异步找了几天也没写出来,
想验证注册机但是也没实现,想开个登录框,是否是我设置的帐号密码也没写,但是程序可以用,现在大神帮我修改修改整合整合,提提意见,谢谢大家了。
- C# code
#region 获取网页回复按钮 private void button1_Click(object sender, EventArgs e) { HtmlElement htmlBtn = webBrowser1.Document.GetElementById("imageField"); htmlBtn.InvokeMember("click"); } String huifucishu = "";//初始化回复次数 #endregion #region 文本1打印 private void button2_Click(object sender, EventArgs e) { try { HtmlElement tbUserid = webBrowser1.Document.All["post_body"]; string Run = ""; Run = textBox1.Text; //文字打印 tbUserid.SetAttribute("value", Run); tbUserid.InvokeMember("click"); button1_Click(sender, e); //3秒不可点击 huifu1.Enabled = false; huifu2.Enabled = false; Timer1.Interval = 3100;//3.1秒 Timer1.Enabled = true; huifu2.BringToFront(); //回复次数计算 huifucishu = label8.Text = (Convert.ToInt32(label8.Text) + 1).ToString(); } catch (Exception) { MessageBox.Show("你日你妹,还没加载完毕呢"); } } #endregion #region 文本2打印 private void button3_Click(object sender, EventArgs e) { try { HtmlElement tbUserid = webBrowser1.Document.All["post_body"]; string Run = ""; Run = textBox2.Text; tbUserid.SetAttribute("value", Run); tbUserid.InvokeMember("click"); button1_Click(sender, e); //3秒不可点击 huifu1.Enabled = false; huifu2.Enabled = false; Timer1.Interval = 3100;//3.1秒 Timer1.Enabled = true; huifu1.BringToFront(); //回复次数 huifucishu = label8.Text = (Convert.ToInt32(label8.Text) + 1).ToString(); } catch (Exception) { MessageBox.Show("你日你妹,急啥急,还没加载完毕呢!"); } } #endregion #region 大量重复操作判断 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { //this.webBrowser1.ScriptErrorsSuppressed = true; if (webBrowser1.ReadyState < WebBrowserReadyState.Complete || webBrowser1.Url.ToString() == LastUrl) return; LastUrl = webBrowser1.Url.ToString(); //执行正常流程代码………… } private string _LastUrl; public string LastUrl { get { return _LastUrl; } set { _LastUrl = value; } } #endregion #region 网页正在加载、请勿操作 private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { label3.Text = "网页正在加载、请勿操作"; jishiqi1.Enabled = true; } //页面加载完成、可以操作了 private void timer1_Tick(object sender, EventArgs e) { if (webBrowser1.ReadyState == WebBrowserReadyState.Complete != webBrowser1.IsBusy == false) { label3.Text = "页面加载完成、可以操作了"; jishiqi1.Enabled = false; } } #endregion #region 按钮3.1秒结束不可点 private void timer2_Tick(object sender, EventArgs e) { button1.Enabled = true; Timer1.Stop(); huifu1.Enabled = true; Timer1.Stop(); huifu2.Enabled = true; Timer1.Stop(); } #endregion #region 按钮切换置顶 private void button4_Click(object sender, EventArgs e) { huifu2.BringToFront(); huifu1.SendToBack(); } #endregion #region 转到网址事件 private void zhuandao_Click(object sender, EventArgs e) { webBrowser1.Navigate(textBox3.Text); } #endregion #region 按钮停止事件 private void timer3_Tick(object sender, EventArgs e) { timer3.Stop(); } #endregion #region 自动回帖事件 private void Aanniu_Click(object sender, EventArgs e) { try { do { for (int i = 0; i != Convert.ToInt32(cancelAsyncButton.Text); i++) { //调用按钮2 button2_Click(sender, e); //间隔3.1秒执行 Thread.Sleep(3100); //调用按钮3 button3_Click(sender, e); //间隔3.1秒执行 Thread.Sleep(3100); } } while (false); } catch (Exception) { MessageBox.Show("请设置回复次数除2的数字"); } } #endregion #region 自动回帖说明 private void button2_Click_1(object sender, EventArgs e) { MessageBox.Show("自动回帖程序会无响应、实际程序仍然在运行当中,可以设置最大值为99999。点击一次回复2楼,设置次数为90次的话,实际回复了180次", "自动回帖说明"); } #endregion #region 无责任提示 private void Form1_Load(object sender, EventArgs e) { MessageBox.Show("程序仅为测试专用、请务作非法用途", "程序说明"); this.toolTip1.SetToolTip(this.textBox1, "支持回车换行的哦"); this.toolTip1.SetToolTip(this.textBox2, "请勿和回复内容1相同"); //窗体显示特效 Opacity = 0.0; //窗体透明度为0 fadeTimer.Start(); //计时开始 } #endregion #region 透明度隐出隐现 private bool showing = true; private void fadeTimer_Tick(object sender, EventArgs e) { double d = 0.10; if (showing) { if (Opacity + d >= 1.0) { Opacity = 1.0; fadeTimer.Stop(); } else { Opacity += d; } } else { if (Opacity - d <= 0.0) { Opacity = 0.0; fadeTimer.Stop(); } } } #endregion
[解决办法]
你这不假死才怪,跟线程异步没有半毛钱关系
[解决办法]
开个线程干那些费时的操作,假死的问题应该可以解决.
有空可以研究下System.Threading.Thread 类
Thread td = new Thread(<干事儿的方法名>);
td.Start();
[解决办法]
不太喜欢灌水机制造者。
[解决办法]
while(false)应该是立马退出了吧————如果C#语法规则和C++一样的话。
[解决办法]
MessageBox.Show("你日你妹,还没加载完毕呢");
吭爹的提示
[解决办法]
你日你妹,还没加载完毕呢