首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> C#/CSHARP教程
用VB.NET做个论坛发帖软件-.NET教程,VB.Net语言
作者:网友供稿 点击:72
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

作者:tuenhai.com msn: king#tuenhai.com

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.tuenhai.com/

  题记:如果你经常泡各种论坛发表宏论,如果您想把您的软件在极短时间内提交到有关网站,如果您想把您的网站快速登陆各搜索引擎,如果您想做个论坛自动发贴软件,本篇文章可能对您有所帮助。

   开发工具:microsoft visual studio .net 2003
   操作系统:windows xp

                  不编程实现自动发帖                  

  不编程也能实现论坛自动发贴?
  答案肯定的。2003年10月前,tuenhai还未学习编程(vb6),但tuenhai已经实现论坛自动发帖器。虽然现在tuenhai已不用这种方法,但可能对有些朋友有用,还是在此介绍一下实现方法。
  实现原理是:借用模拟键盘、鼠标操作的软件,抓取输入框座标,然后模拟移动鼠标到指定座标,模拟键盘输入字符,模拟回车或点击相应位置完成自动发贴。当然,你得编写相应自动化脚本,虽有一点难度,但对于编程来说,应该是简单的。
  有三个模拟键盘、鼠标类软件,功能比较好,在《vs.net学习方法论》http://www.tuenhai.com/已经有所介绍。
  一. pcworker(http://www.pcworker.net)
   pcworker功能极多,更重要的是,pcworker中的脚本代码都是看得懂的代码:

press vk_f1 // 模擬按 f1 鍵
press vk_ctrl+vk_f // 模擬按 ctrl + f 鍵

  是不是不太难?

  二. “按键精灵”(http://www.vrbrothers.com/cn/qmacro)
  相对来说,按键精灵容易使用,但只有pcworker的少部分功能。比如pcworker可输出随机数,按键精灵就不行。
  按键精灵的脚本代码不太容易看懂,比如
  keypress 82 1
   您看得出按的是哪个键吗?

  三. ezscript(http://ezscript.seed.cx/)
  ezscript的功能也很多。但tuenhai在windows xp下试用自动发贴时,没有反应。

   初学者建议使用按键精灵,进阶则用pcworker。使用教程请参考作者网站。


                   用axwebbrowser控件做论坛自动发贴软件

 
   axwebbrowser控件即vb6中的webbrowser控件。
   用axwebbrowser做论坛批量发贴软件,使用时先添加对axwebbrowser控件和mshtml的引用。
   先navigate到指定网址。然后用以下代码等待网页加载完毕:

do while brow.busy
  application.doevents()
loop

  然后调用发帖过程。

public sub fill()
  on error resume next
  do while brow.busy
    application.doevents()
  loop

  dim webdoc as object = brow.document.all
  dim webtag as object
  dim lengthtag as integer = webdoc.length - 1

  for counttag as integer= 0 to lengthtag
    webtag = webdoc.item(counttag)
    select case strings.lcase(webdoc.item(counttag).tagname)
      case "textarea"     网页中的文本框
        select case webtag.name
          case "body"   "body"来自网页源代码,不同网站很可能不同,你根据实际修改。下同。
            webtag.value = strbody   这是预先定义的值,下同。
         end select

      case "select"       网页中的下拉选择框
        select case webtag.name
          case "month"   选择月份,这里略去年、日的选择,因为原理相同。
            webtag.all.item(1).selected = true  选择第一个值
         end select

       case "input"  网页中的输入框
        select case strings.lcase(webtag.type)
          case "text"     文本
            select case webtag.name
              case "name", "userid", "nickname" 用户名
                webtag.value = strname
              case "subject" 标题
                webtag.value = strsubject
              case "regid" 注册码
                webtag.value = strregid
              case "username", "realname"
                webtag.value = strusername
              case "cardnumber"
                webtag.value = strcardnumber
              case "homephone"
                webtag.value = strhomephone 电话号
              case "url_title" 链接名称
                webtag.value = urltitle
              case "url"  链接
                webtag.value = url
              case "email" email地址
                webtag.value = email
              case "img"  图片  
                webtag.value = img
              case "midi"  音乐
                webtag.value = midi
              case "year"  年
                webtag.value = stryear
              case "prompt" 找回密码提示问题
                webtag.value = strprompt
              case "answer" 找回密码答案
                webtag.value = stranswer
            end select
          case "password"  密码
            select case webtag.name
              case "passwd", "password", "confirm", "repasswd" 密码,确认密码
                webtag.value = strpass
            end select
          case "checkbox"  单选框
            select case webtag.name
              case "emailme"  email通知tuenhai
                webtag.checked = true  
            end select

        end select

     end select
   next

  brow.document.forms(0).submit()  许多网页表单,这一句简单代码即实现自动提交

end sub
 

于是,主过程是这样:

public sub autoadd()
  brow.silent = true 不弹出窗口
  brow.navigate("http://www.tuenhai.com")  tuenhai的小站为例
  do while formbrownetsh.brow.busy  等待网页加载完毕
    application.doevents()
  loop
  call fill()
end sub

  以上代码可实现可视化自动注册和论坛自动发帖工具。
   还有几个问题有待解决:
   一. 有的网站要填上识别码数字才能注册或发言,如何用程序来实现自动识别识别码图片上的数字?
   二. 有的网站一进去就会跳出一个欢迎对话框,程序的运行就被暂停。
   三. 对于自动注册和发言来说,加载较慢的图片、flash、音乐等并不是必需的。

  
              用httpwebrequest类做论坛快速发帖器

  用httpwebrequest类做论坛发贴机就简单多了。
  我们始终不能忘记,最好的教程是msdn,在microsoft visual studio .net 2003“搜索”中敲入httpwebrequest,抄来一些东东(事实上许多教程书籍都是从msdn上抄的):
   命名空间: system.net
   httpwebrequest 类对 webrequest 中定义的属性和方法提供支持,也对使用户能够直接与使用 http 的服务器交互的附加属性和方法提供支持。
   不要使用 httpwebrequest 构造函数。使用 webrequest.create 方法初始化 httpwebrequest 的一个新实例。如果 uri 的方案是 http:// 或 https:// ,则 create 将返回 httpwebrequest 实例。
   getresponse 方法向 requesturi 属性中指定的 internet 资源发出同步请求并返回包含该响应的 httpwebresponse 实例。可以使用 begingetresponse 和 endgetresponse 方法对 internet 资源发出异步请求。
   当要向 internet 资源发送数据时, getrequeststream 方法返回用于发送数据的 stream 实例。  begingetrequeststream 和 endgetrequeststream 方法提供对发送数据流的异步访问。  
   如果在访问 internet 资源时发生错误,则 httpwebrequest 类将引发 webexception 。 webexception.status 属性是 webexceptionstatus 值之一,它指示错误源。当 webexception.status 为 webexceptionstatus.protocolerror 时, response 属性包含从 internet 资源接收的 httpwebresponse 。
  

shared sub postdata()
  dim httpurl as new system.uri("http://www.tuenhai.com?" & "name=yourname&pass=yourpass&cardnumber=yourcardnumber")
  dim req as httpwebrequest
  req.timeout = 10000 设置超时值10秒
  req = ctype(webrequest.create(httpurl2), httpwebrequest)
  req.method = "post"
  req.contenttype = "application/x-www-form-urlencoded"
  dim bytesdata() as byte =   system.text.encoding.ascii.getbytes(""name=yourname&pass=yourpass&cardnumber=yourcardnumber")
  req.contentlength = bytesdata.length
  dim poststream as stream = req.getrequeststream()
  poststream.write(bytesdata, 0, bytesdata.length)   以上向服务器post信息。

  dim res as httpwebresponse = ctype(req.getresponse(), httpwebresponse) 以下获取服务器返回信息
  dim reader as streamreader = _
  new streamreader(res.getresponsestream, system.text.encoding.getencoding("gb2312"))
  dim resphtml as string = reader.readtoend()
    msgbox(resphtml)  这就是向网络服务器post后返回的信息
    msgbox(res.statuscode.tostring)  向网络服务器post后返回的状态码
  res.close() 关闭

end sub

  用axwebbrowser控件做论坛发贴机留有三个问题,用httpwebrequest类来实现,后二个问题都不复存在。而且,用httpwebrequest类来实现论坛发帖器的速度要快得多。但是,同样的?
  有的网站要填上识别码数字才能注册或发言,如何用“论坛自动发贴机”来实现自动识别识别码图片上的数字?

  我们在主过程里加上线程,因为我们以后要用多线程做自动发帖机啊。用多线程做论坛自动发贴器在vb6中不好实现,在vb.net中做自动发帖工具却不难。
 

dim threadadd as system.threading.thread 定义线程 
public sub threadautoadd()
  threadadd= new system.threading.thread(addressof postdata)  创建线程实例
  threadnetsh.start()  开始线程
  别忘了在sub postdata()的最后加上threadautoadd.abort()来关闭线程
  或者在这里加上判断sub postdata()完毕的代码,如果完毕就关闭线程
end sub


  visual studio .net 2003 是一个全面的开发工具,用于快速构建面向 microsoft windows? 和 web 并连接 microsoft .net 的应用程序,是否极大地提高了我们的开发效率呢?


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·使用C#编写Windows Forms应用程序(转)-.NET教程,Windows开发
·C#学习杂记-.NET教程,C#语言
·将文本格式的文章转换为html/xml格式文本的功能封装到Javabean-JSP教程,Java技巧及代码
·用java小程序applet实现无限级树结构-JSP教程,Java技巧及代码
·《.net编程先锋C#》第一章 C#简介-.NET教程,C#语言
·企业人事信息管理系统1.0-ASP教程,数据库相关
·《.net编程先锋C#》第三章 第一个C#应用程序-.NET教程,C#语言
·《.net编程先锋C#》第二章 理论基础-公用语言 运行环境-.NET教程,C#语言
·Windows应用程序调试必备的--符号文件(Symbols)-.NET教程,评论及其它
·c#反编译微软msdn2003的帮助文档,并将反编译结果保存到一个sqlserver数据库中
最新文章
·vista的新特性:懒人的安全感_windows vista
·photoshop为情侣照片打造韩式梦幻相框_photoshop教程
·专访seobbs站长乐思蜀_站长访谈
·嘟嘟网络陈艺光:诚信是一种信仰_站长访谈
·俺自己黄修源:只问耕耘,不问收获_站长访谈
·李向华:如何提高论坛用户粘性_站长访谈
·给windows vista系统网络和共享中心“换脸”_windows vista
·胡宪东谈搜索优化的实战_站长心得
·网站快速成功的九个步骤_站长心得
·google pr数字背后的含意_google推广
相关主题
  • 用vb.net 2005编写定时关机程序_vb/vb.net教程
  • 用VB.Net编织未来-.NET教程,VB.Net语言
  • 用VB.NET做winform的在线更新程序-.NET教程,VB.Net语言
  • 用VB.Net导出数据到数据透视表-.NET教程,VB.Net语言
  • 用VB.NET轻松制作特效窗体-.NET教程,VB.Net语言
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭