捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
Delphi自动填表 自动登录(无下载)
关键字:论坛自动填表 自动登录 自动发帖
来 自:原创
平 台:Win2k/XP/NT,Win2003 下载所需:0 火柴
深浅度:初级 完成时间:2010/8/11
发布者:panti 发布时间:2011/4/24
编辑器:DELPHI7 语  种:简体中文
分 类:互联网 下载浏览:1749/21712
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
演示论坛的自动登录,自动发贴程序(源码)
说是原创,其实很多是学习和借鉴别人的

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Function GetFrame(FrameNo:Integer):IWebbrowser2;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
      uses MSHTML,ActiveX;
Function TForm1.GetFrame(FrameNo:Integer):IWebbrowser2;
var
OleContainer:IOleContainer;
enum:IEnumUnknown;
unk:IUnknown;
Fetched:PLongint;
begin
while Form1.webbrowser1.ReadyState<>READYSTATE_COMPLETE do
Application.ProcessMessages;
if Assigned(webbrowser1.document) then
begin
Fetched:=nil;
OleContainer:=webbrowser1.Document as IOleContainer;
OleContainer.EnumObjects(OLECONTF_EMBEDDINGS,enum);
Enum.Skip(FrameNo);
Enum.Next(OLECONTF_EMBEDDINGS,Unk,Fetched);
Result:=Unk as IWebbrowser2;
end
else
Result:=nil;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
hform:IHTMLFormelement;
hdoc:ihtmldocument2;
hall:ihtmlelementcollection;
Hinput:IHTMLinputelement;
iw:iwebbrowser2;
hlen,tmploop:integer;
vk:oleVariant;
dispatch:IDispatch;
ovElements: OleVariant;
tables: IHTMLElementCollection;
Table1   :HTMLTable;
doc:IHTMLDocument3;
ii:Cardinal;
ObjTmp:OleVariant;

begin      //这段代码根据麻山论刀灌水机
if Assigned(webbrowser1) then ///确保网页里有内容;即已打开一个网页!
begin
hdoc:=webbrowser1.document as ihtmldocument2;
hall:=hdoc.get_all;
hlen:=hall.get_length;
////以上几步的操作为:将浏览器控件里的内容赋给hdoc.取其任何标识,并算出总数;
////下面的操作为:按总数循环找到用户名和密码的edit;并赋值;
for tmploop:=0 to hlen-1 do
begin
vk:=tmploop;
dispatch:=hall.item(vk,0);
if succeeded(Dispatch.QueryInterface(IHTMLInputelement,hinput)) then
///假如此标识是个edit控件.....
begin ////下面这里的uppercase是必需的!防止因大小写的不同而判断失误!
///下面的"TEXT"是由网页里的内容来确定的.也就是说您要判断就必需根据具体网页代码来!
///密码框和用户名处是相同的!
//if Hinput.type_=
if uppercase(hinput.Type_)='TEXT' then hinput.value:='myname'
else if uppercase(hinput.type_)='PASSWORD' then hinput.value:='mypass';
end;
//if succeeded(dispatch.QueryInterface(IHTMLFormElement,hform)) and
//(hform.name='submit') then
///此处是form提交.假如从html发现只有一个form的话那第二个条件是非必需的!
///而且也不一定要判断name属性,也能够根据其他属性来判断.
//sleep(2000);
//WebBrowser1.OleObject.document.getElementsByTagName('input').item(7).click;
// Break;
 // FormCreate(nil);

 
end;
end; //if end;  

end;


procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://bbs.2ccc.com/');
end;

procedure TForm1.Button2Click(Sender: TObject);
var 
hIE: HWND; 
ShellWindow: IShellWindows; 
WB: IWebbrowser2; 
spDisp: IDispatch; 
IDoc1: IHTMLDocument2; 
Document: Variant; 
k, m: Integer; 
ovElements: OleVariant; 
i: Integer; 
begin
ShellWindow := CoShellWindows.Create; 
// get the running instance of Internet Explorer 
for k := 0 to ShellWindow.Count do 
begin 
spDisp := ShellWindow.Item(k); 
if spDisp = nil then Continue; 
// QueryInterface determines if an interface can be used with an object 
spDisp.QueryInterface(iWebBrowser2, WB); 

if WB <> nil then 
begin 
WB.Document.QueryInterface(IHTMLDocument2, iDoc1); 
if iDoc1 <> nil then 
begin 
WB := ShellWindow.Item(k) as IWebbrowser2; 
begin 
Document := WB.Document; 

// count forms on document and iterate through its forms 
for m := 0 to Document.forms.Length - 1 do 
 begin
  ovElements := Document.forms.Item(m).elements;
// iterate through elements 
  for i := 0 to ovElements.Length - 1 do
  begin
    try
    if (ovElements.item(i).Value = '提 交')  //不知是不是这句,成功了。
    then // Suchen für German
      begin
      ovElements.item(i).Click;
      end;
    except
    end;
  end;

 end;
end; 
end; 
end; 
end; 
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
WebBrowser1.OleObject.document.getElementsByTagName('input').item(7).click;

 
end;

end.
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
没有相关文章
相关评论
共有评论1条 当前显示最后1条评论
lixupeng 2011/5/20 22:04:38
收下!!
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表