📄 2005331154618.htm
字号:
<HTML><HEAD><TITLE>用Delphi实现论坛灌水机(含源码)-http://www.koyee.com</TITLE>
<SCRIPT src="../../ips.asp"></SCRIPT>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=http://www.koyee.com content=no-cache>
<META content=可以网络在线,ASP技术,.NET技术,delphi技术,JSP技术,VB技术! name=KEYWORDS>
<STYLE type=text/css>
BODY {
BACKGROUND-IMAGE: url(images/webtop_bg3.gif); MARGIN: 0px
}
.style2 {
FONT-SIZE: 12px
}
BODY {
FONT-SIZE: 12px;
COLOR: #333333;
background-image: url();
}
TD {
FONT-SIZE: 12px; COLOR: #333333
}
TH {
FONT-SIZE: 12px; COLOR: #333333
}
A:link {
COLOR: #333333; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
A:visited {
COLOR: #cc3399; FONT-STYLE: normal; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
A:hover {
COLOR: #cc66ff; FONT-STYLE: normal; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
A:active {
COLOR: #ff9999; FONT-STYLE: normal; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.style4 {color: #FFFFFF}
.style5 {color: #000000}
.style6 {color: #FF0000}
.style7 {
color: #FF0000;
font-size: 16px;
font-weight: bold;
}
</STYLE></head>
<script language="JavaScript">
var timerID = null;
var timerRunning = false;
function stopclock (){
if(timerRunning)
clearTimeout(timerID);
timerRunning = false;}
function startclock () {
stopclock();
showtime();}
function showtime () {
var now = new Date();
var year = now.getYear();
var month = now.getMonth()+1;
var day = now.getDate();
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds()
var timeValue =year +"年"
timeValue += month+"月"
timeValue += day+"日 "
timeValue += "" +((hours >= 12) ? "下午 " : "上午 " )
timeValue += ((hours >12) ? hours -12 :hours)
timeValue += ((minutes < 10) ? ":0" : ":") + minutes
timeValue += ((seconds < 10) ? ":0" : ":") + seconds
liveclock.innerHTML=timeValue
timerID = setTimeout("showtime()",1000);
timerRunning = true;}
</script>
<body onload="startclock()">
<TABLE height=60 cellSpacing=0 cellPadding=0 width="800"
align=center border=0>
<TBODY>
<TR>
<td background="../../images/webtop_bg.gif" width="332"><a target=blank href=http://wpa.qq.com/msgrd?V=1&Uin=61637663&Site=http://www.koyee.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:61637663:13 alt="有事就给我打电话,拼命的打"></a></td>
<td background="../../images/webtop_bg.gif" width="455"><script src="http://www.4.ads99.net/banner.php?userid=chdujian"></script></td>
</TR></TBODY></TABLE>
<TABLE height=25 cellSpacing=0 cellPadding=0 width="800"
align=center border=0>
<TBODY>
<TR>
<td background="../../images/22.gif"> <a href=../../index.htm>首页</a> | <a href=../../artical/69/1.htm>程序设计</a> | <a href=../../artical/77/1.htm>IT行情</a> | <a href=../../artical/78/1.htm>黑客攻防</a> | <a href=../../artical/79/1.htm>电脑硬件</a></td>
</TR></TBODY></TABLE>
<table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td scope="col"><img src="http://www.asp315.com/study/images/index_r1_c1.jpg" width="800" height="83"></td>
</tr>
</table>
<TABLE height=25 cellSpacing=0 cellPadding=0 width="800"
align=center border=0>
<TBODY>
<TR>
<td width="624" bgcolor="#CCCCCC">当前位置:<a href=../../index.htm>首页</a>--><a href=../../artical/69/1.htm>程序设计</a>--><a href=../../artical/82/1.htm>delphi</a>-->显示文章内容</td><td width="176" bgcolor="#CCCCCC"><span id="liveclock"></span></td>
</TR></TBODY></TABLE>
<table width="800" height="406" border="1" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td width="166" height="200" valign="top" scope="col"><table width="100%" height="163" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="119" valign="top" scope="col"><table width="180" border="0" cellspacing="0" cellpadding="0" align="center">
<form action="../../search.asp" method="post" name="searchLeftForm">
<tr bgcolor="CAF6F4" align="center">
<td height="25" bgcolor="#CC9900"><font color="#cc0000"><b>□
站 内 搜 索 □</b></font></td>
</tr>
<tr align="center">
<td style="line-height:150%" height=60> 请输入查询的字符串:<br>
<input name="search" type="text" class="button1" id="search" style="width:150">
<select name="seaguan" size="1" class="button1" id="seaguan" style="width:150">
<option value="">==> 综合查询 <==</option>
<option value="title">标题</option>
<option value="破天惊">作者</option>
<option value="artical">内容</option>
<%call getNewsBoardTree()%>
</select>
</td>
</tr>
<tr align="center">
<td>
<input type="SUBMIT" name="Action" value=" 查 询 " class="button2">
<input type="RESET" name="Clear" value=" 重 写 " class="button2">
</td>
</tr>
<tr align="center">
<td height="10"></td>
</tr>
</form>
</table></td>
</tr>
<tr>
<td height="20"><table width="181" height="20" cellpadding="0" cellspacing="0">
<tr><td width="181" height="20" align="center" bgcolor="#CC9900">分类最新文章</td>
</tr>
<tr><td><a href=2005331154618.htm target=_blank>用Delphi实现论坛灌水机</a></td></tr>
</table></td>
</tr>
<tr>
<td height="20"><table width="181" height="20" cellpadding="0" cellspacing="0">
<tr><td width="181" height="20" align="center" bgcolor="#CC9900">分类热门文章</td>
</tr>
<tr><td><a href=2005331154618.htm target=_blank>用Delphi实现论坛灌水机</a></td></tr>
</table></td>
</tr>
</table></td>
<td width="628" valign="top" scope="col"><table width="100%" border="0" align="center" cellspacing="0" cellpadding="5" bordercolordark="#FFFFFF" bordercolorlight="#000000" style="word-break:break-all;">
<tr>
<td width="100%">
</td>
</tr>
<tr>
<td width="100%">
<div align="center">
<p class="style7"><SPAN class=style1>用Delphi实现论坛灌水机(含源码)</SPAN></p>
<hr size="1" color="#0a778b" width="100%">
发布时间:2005-3-31 被阅览数:<SCRIPT src="../../counter.asp?id=484"></SCRIPT> 次 作者:破天惊
</div>
</td>
</tr>
<tr>
<td width="100%"><p class="style6"><P> 本来以为网页里的edit,memo等都和程序里的一样,可以用句柄来控制,但后来才明白,它是不存在句柄的!</P>
<P>
<TABLE align=left>
<TBODY>
<TR>
<TD align=left><BR></TD></TR></TBODY></TABLE> 查了好久,前几天看到一个关于QQ自动申请的例子.主要就是控制网页各种操作的!总结了一下,做出一个论坛灌水机:</P>
<P> 首先要在uses中引用mshtml单元. </P>
<P> 代码及分析如下:</P>
<P>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=450 align=center borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code bgColor=#e6e6e6><PRE><SPAN class=p11b> var<BR> hform:IHTMLFormelement;<BR> hdoc:ihtmldocument2;<BR> hall:ihtmlelementcollection;<BR> Hinput:IHTMLinputelement;<BR> iw:iwebbrowser2;<BR> hlen,tmploop:integer;<BR> vk:oleVariant;<BR> dispatch:IDispatch;<BR> begin<BR> if Assigned(webbrowse1) then ///保证网页里有内容;即已经打开一个网页!<BR> begin<BR> hdoc:=webbrowse1.document as ihtmldocument2;<BR> hall:=hdoc.get_all;<BR> hlen:=hall.get_length;<BR> ////以上几步的操作为:将浏览器控件里的内容赋给hdoc.取其所有标识,并算出总数;<BR> ////下面的操作为:按总数循环找到用户名和密码的edit;并赋值;<BR> for tmploop:=0 to hlen-1 do<BR> begin<BR> vk:=tmploop;<BR> dispatch:=hall.item(vk,0);<BR> if succeeded(Dispatch.QueryInterface(IHTMLInputelement,hinput)) then<BR> ///如果此标识是一个edit控件.....<BR> begin ////下面这里的uppercase是必需的!防止因大小写的不同而判断失误!<BR> ///下面的"TEXT"是由网页里的内容来确定的.也就是说你要判断就必需根据具体网页代码来!<BR> ///密码框和用户名处是一样的!<BR> if uppercase(hinput.Type_)='TEXT' then hinput.value:='tresss'<BR> else if uppercase(hinput.type_)='PASSWORD' then hinput.value:='tresss';<BR> end;<BR> if succeeded(dispatch.QueryInterface(IHTMLFormElement,hform))<BR> and (uppercase(hform.name)='THEFORM')<BR> then<BR> ///此处是form提交.如果从html发现只有一个form的话那第二个条件是非必需的!<BR> ///而且也不一定要判断name属性,也可以根据其它属性来判断.<BR> Hform.submit;<BR> end; ////for end;<BR> end; //if end;<BR> end;<CCID_CODE /></SPAN></PRE></TD></TR></TBODY></TABLE></P>
<P> 到此,,一个自动登陆的例子就作好了..如果要实现灌水的话,,可以将hinput:ihtmlinputelement换成htext:ihtmltextareaelement,也就相当于memo控件.将用户名的赋值换成是发言的赋值就好;当然这里还可以换成是其它的,如单选等...具体内容可以查看mshtml里的列表!</P>
<P> 本来到这里已经够了.但是后来发现--原来论坛里是有框架--frame的.好长一段时间被此困扰着,后来在csdn上问了一下,有人给出了解决方法,试了一下很不错!</P>
<P> 上面的代码里可以加入:<BR>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=450 align=center borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code bgColor=#e6e6e6><PRE><SPAN class=p11b> var<BR> ......<BR> ......<BR> iw:iwebbrowser2;<BR> begin<BR> .....<BR> iw:=getframe(3); //此步即是取得webbrowse里的第二个框架;<BR> ///而后的操作都是一样的,也就是上面的操作的作用是将一个框架里的内容来作为一个网页来处理;<BR> hdoc:=iw.document as ihtmldocument2;<BR> hall:=hdoc.get_all;<BR> ......<BR> ......<BR> ///getframe() 函数如下需要在uses里加入activex单元:<BR> Function TFrmain.GetFrame(FrameNo:Integer):IWebbrowser2;<BR> var<BR> OleContainer:IOleContainer;<BR> enum:IEnumUnknown;<BR> unk:IUnknown;<BR> Fetched:PLongint;<BR> begin<BR> while webbrowse1.ReadyState<>READYSTATE_COMPLETE do<BR> Application.ProcessMessages;<BR> if Assigned(webbrowse.document) then<BR> begin<BR> Fetched:=nil;<BR> OleContainer:=webbrowse.Document as IOleContainer;<BR> OleContainer.EnumObjects(OLECONTF_EMBEDDINGS,enum);<BR> Enum.Skip(FrameNo);<BR> Enum.Next(OLECONTF_EMBEDDINGS,Unk,Fetched);<BR> Result:=Unk as IWebbrowser2;<BR> end<BR> else<BR> Result:=nil;<BR> end;<CCID_CODE /></SPAN></PRE></TD></TR></TBODY></TABLE></P>
<P> 还有要说明的一点就是网页里框架的跳转!依然是使用的navigate 但是需要两个参数!<BR> webbrowse.navigae('要转到的网页地址',flag1,flag2);<BR> 其中两个参数的类型是:olevariant;<BR> 第一个参数不需要赋值,它控制的是网页打开的其它选项(如:在新网页中打开.等).<BR> 我们所要操作的是第二个参数.这里你要先打开网页的源文件,查看他的frame的name属性!记住所要控制的frame的name把它的值赋给flag2就可以了!这样就是在一个frame中打开一个网页!</P>
<P> 这样的话,加上一个timer再加上一些代码就可以作成一个完整的灌水机了!</P></p>
<p><img src="http://www.koyee.com/images/dgg.gif" height="70" width="587"> </p></td>
</tr>
<tr>
<td width="628" bordercolor="0" class="font1"><p>
<hr size="1" color="#0a778b" width="100%">
<table><tr><td width="269" align="center">上一篇: <a href=../94/200533113170.htm title=经验分享,尼康D70购买经历>经验分享,尼康D70购买经历</a> </td>
<td width="285" align="center">下一篇: <a href=../90/200542823048.htm title=gew>gew</a></td>
</tr></table>
<hr size="1" color="#0a778b" width="100%">
<div align="right"> <a href="javascript:window.print()"><img src="../../images/printer.gif" width="16" height="14" border="0" align="absmiddle">打印本页</a> | <a href="javascript:window.close()"><img src="../../images/close.gif" width="14" height="14" border="0" align="absmiddle">关闭窗口</a> </div>
<p></p></td>
</tr>
</table></td>
</tr>
</table>
<TABLE height=62 cellSpacing=0 cellPadding=0 width="800"
align=center background=../../images/webtop_bg.gif
border=0>
<TBODY>
<TR>
<TD><div align="center" class="style4">Copyright @ 2004-2008 http://www.koyee.com 可以网络在线版权所有<br>
公司地址:江西南昌 电话:13879173467 邮编:330029<br>
email:chenxueyan9999@163.com</div></TD>
</TR></TBODY></TABLE>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -