




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
查看文章学习用MSHTML控制网页中所有元素(delphi代码)2008-04-15 17:11用VS2005中的WebBrowser来控制网页中的元素,虽然VS2005封装了很多不错的功能,但用起来总觉得有所欠缺。比如我想如得到框架页内网页的源码,找来的去,就是找不到合适的方法。 MSHTML是微软公司的一个COM组件,该组件封装了HTML语言中的所有元素及其属性,通过其提供的标准接口,可以访问指定网页的所有元素MSHTML对象模型是由一些对象和集合组成的处于根部的是HTML,描述了打开页面的1个窗口,包括一系列集合和对象。如Frames集合,History,Location,Navigator,Document,Visum,Event对象等其中描述呈现在客户窗口实际网页的是Document对象。由一系列的属性、方法、对象和集合组成其中All集合中包含网页中所有标记(Tag)元素,其主要的方法和属性有:(1)Length(长度):即标记出现的个数,可以把标记的集合理解为从0开始的一维数组,其次序按照标记在网页位置排列;(2)Tags(标记):用于过滤出给定标记的集合,如DocAl1Tags(P)得到所有分段标记P;(3)Item(项目):用于选择集合中的某1个元素,如objectitem(0)得到集合的第1个元素,而objectitem(i)得到第i+1个元素 此外,IHTMLElement也是个常用的集合对象,代表网页中指定标记的集合,通过这个集合对象,可以得到网页上特定标记的内容IHTMLElement有4个主要属性:(1)InnerText:开始标记和结束标记之间的文本;(2)InnerHTML:开始标记和结束标记之间的文本和HTML;(3)OuterText:对象的文本;(4)OuterHTML:对象的文本和HTML自动提交 procedure TForm1.Button1Click(Sender: TObject); var Doc:IHTMLDocument2; input:OleVariant; userinputelement,pwdinputelement:ihtmlinputelement; begin doc:=webbrowser1.document as ihtmldocument2; userinputelement:=(doc.all.item(user(也就是网页中用户名控件的名字),0) as ihtmlinputelement); userinputelement.value:=edit1.text;(也就是你要向网页输入的东西) pwdinputelement:=(doc.all.item(password,0) as ihtmlinputelement); pwdinputelement.value:=edit2.text; input:=doc.all.item(submit,0); input.click; end; 当提交数据按钮没有NAME属性时,采用如下方法:procedure TForm1.Button1Click(Sender: TObject); var Doc:IHTMLDocument2; form:ithmlformelement; userinputelement,pwdinputelement:ihtmlinputelement; begin doc:=webbrowser1.document as ihtmldocument2; userinputelement:=(doc.all.item(user(也就是网页中用户名控件的名字),0) as ihtmlinputelement); userinputelement.value:=edit1.text;(也就是你要向网页输入的东西) pwdinputelement:=(doc.all.item(password,0) as ihtmlinputelement); pwdinputelement:=edit2.text; form:=(doc.all.item(login_form,0) as ihtmlformelement): form.submit; end; 当前页为框架页时,采用如下方法: procedure TForm1.Button1Click(Sender: TObject);var doc2:IHTMLDocument2; o : Olevariant; ole_index: OleVariant; frame_dispatch: IDispatch; frame_win: IHTMLWindow2; frame_doc: IHTMLDocument2;begin begin doc2 := WebBrowser1.Document as IHTMLDocument2; ole_index:=0; frame_dispatch := doc2.Frames.Item(ole_index); if frame_dispatch nil then begin frame_win := frame_dispatch as IHTMLWindow2; frame_doc := frame_win.document; / memo1.lines.add(IHTMLDocument2(frame_doc).body.outerHTML); End; end; Delphi 网页内容查询控制(idHttpControl,idAntiFreezeControl,TProgressBar)Delphi 2010-06-28 14:39:13 阅读61 评论0 字号:大中小订阅 直接采用Delphi自带Control控件INDY组件为例.新建个工程,放上个TIdHTTPControl控件,个TIdAntiFreezeControl控件,个TProgressBar用于显示下载进度.最后放上个TButton用于开始执行我们命令.代码如下:procedure TForm1.Button1Click(Sender: TObject);/点击按钮时候开始下载我们文件varMyStream:TMemoryStream;beginIdAntiFreeze1.OnlyWhenIdle:=False;/设置使有反应.MyStream:=TMemoryStream.Create;tryIdHTTP1.Get(/download/Mp3ToExe.zip,MyStream);/下载我站点个ZIP文件except/INDYControl控件般要使用这种try.except结构.Showmessage(网络出错!);MyStream.Free;Exit;end;MyStream.SaveToFile(c:Mp3ToExe.zip);MyStream.Free;Showmessage(OK);end;procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;const AWorkCountMax: Integer);/开始下载前,将ProgressBar1最大值设置为需要接收数据大小.beginProgressBar1.Max:=AWorkCountMax;ProgressBar1.Min:=0;ProgressBar1.Position:=0;end;procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;const AWorkCount: Integer);/接收数据时候,进度将在ProgressBar1显示出来.beginProgressBar1.Position:=ProgressBar1.Position+AWorkCount;end;IdHTTP1Get还有种形式就是获取串:例如,上面可以改写成:procedure TForm1.Button1Click(Sender: TObject);varMyStr:String;beginIdAntiFreeze1.OnlyWhenIdle:=False;/设置使有反应.tryMyStr:=IdHTTP1.Get(/default.htm);exceptShowmessage(网络出错!);Exit;end;Showmessage(MyStr);end;来源:(/s/blog_426a901f0100g904.html) - 网页内容查询控制_星岚_新浪博客Delphi调用Java的Web Service,请指点web service 服务端是用cxf简单实现的,java作为客户度已经能成功调用但用Delphi作为客户端调用时出错Delphi实现客户端时,直接用Delphi自带的wsdl importor生成接口文件先把wsdl贴出来吧XML code - - - - - /xs:sequence/xs:complexType- - /xs:sequence/xs:complexType/xs:schema/wsdl:types- /wsdl:message- /wsdl:message- - /wsdlperation/wsdl:portType- - - /wsdl:input- /wsdlutput/wsdlperation/wsdl:binding- - /wsdl:port/wsdl:service/wsdl:definitionsDirectUI 界面开发技术 DirectUI界面开发技术视频教程 DirectUI SDK文档 回复 引用 TOP 发短消息 加为好友 UID1888帖子0精华0积分6883威望1163 金币123 枚贡献4434 阅读权限0在线时间0 小时注册时间2009-11-5元老2# 发表于 2010-4-13 18:12 | 只看该作者 delphi生成的接口文件Delphi(Pascal) code / * / The types declared in this file were generated from data read from the/ WSDL File described below:/ WSDL : 9:9199/helloWorld?wsdl/ Encoding : UTF-8/ Version: 1.0/ (2010-4-12 16:05:17 - )/ * /unit IntfHelloWorld;interfaceuses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;type/ * / The following types, referred to in the WSDL document are not being represented/ in this file. They are either aliases of other types represented or were referred/ to but never! declared in the document. The types from the latter category/ typically map to predefined/known XML or Borland types; however, they could also / indicate incorrect WSDL documents that failed to declare or import a schema type./ * / !:string - /2001/XMLSchema/ * / Namespace : / transport : /soap/http/ style : document/ binding : HelloWorldImplServiceSoapBinding/ service : HelloWorldImplService/ port : HelloWorldImplPort/ URL : 9:9199/helloWorld/ * /HelloWorld = interface(IInvokable)FD8A0710-486D-67E2-9EDD-8D2655AA62BC functionsayHi(const text: WideString): WideString; stdcall;end;function GetHelloWorld(UseWSDL: Boolean=System.False; Addr: string=; HTTPRIO: THTTPRIO = nil): HelloWorld;implementationfunction GetHelloWorld(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): HelloWorld;constdefWSDL = 9:9199/helloWorld?wsdl;defURL= 9:9199/helloWorld;defSvc= HelloWorldImplService;defPrt= HelloWorldImplPort;varRIO: THTTPRIO;beginResult := nil;if (Addr = ) thenbegin if UseWSDL then Addr := defWSDL else Addr := defURL;end;if HTTPRIO = nil then RIO := THTTPRIO.Create(nil)else RIO := HTTPRIO;try Result := (RIO as HelloWorld); if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr;finally if (Result = nil) and (HTTPRIO = nil) then RIO.Free;end;end;initializationInvRegistry.RegisterInterface(TypeInfo(HelloWorld), /, UTF-8);InvRegistry.RegisterDefaultSOAPAction(TypeInfo(HelloWorld), );InvRegistry.RegisterInvokeOptions(TypeInfo(HelloWorld), ioDocument);end./ * / / The types declared in this file were generated from data read from the / WSDL File described below: / WSDL : http:/localhost/ServiceTest/Service.asmx?wsdl / Encoding : utf-8 / Version : 1.0 / (2005-12-17 1:49:46 - ) / * / unit Service; interface uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns; type / * / / The following types, referred to in the WSDL document are not being represented / in this file. They are either aliases of other types represented or were referred / to but never! declared in the document. The types from the latter category / typically map to predefined/known XML or Borland types; however, they could also / indicate incorrect WSDL documents that failed to declare or import a schema type. / * / / !:string - /2001/XMLSchema / * / / Namespace : / / soapAction: /HelloWorld / transport : /soap/http / binding : ServiceSoap / service : Service / port : ServiceSoap / URL : http:/localhost/ServiceTest/Service.asmx / * / ServiceSoap = interface(IInvokable) 77573149-9C57-FA51-F11F-EFD527C91BD9 function HelloWorld(const user: WideString): WideString; stdcall; end; function GetServiceSoap(UseWSDL: Boolean=System.False; Addr: string= ; HTTPRIO: THTTPRIO = nil): ServiceSoap; implementation function GetServiceSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): ServiceSoap; const defWSDL = http:/localhost/ServiceTest/Service.asmx?wsdl ; defURL = http:/localhost/ServiceTest/Service.asmx ; defSvc = Service ; defPrt = ServiceSoap ; var RIO: THTTPRIO; begin Result := nil; if (Addr = ) then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; if HTTPRIO = nil then RIO := THTTPRIO.Create(nil) else RIO := HTTPRIO; try Result := (RIO as ServiceSoap); if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; finally if (Result = nil) and (HTTPRIO = nil) then RIO.Free; end; end; initialization InvRegistry.RegisterInterface(TypeInfo(ServiceSoap), / , utf-8 ); InvRegistry.RegisterDefaultSOAPAction(TypeInfo(ServiceSoap), /HelloWorld ); end.通过 Delphi实现 Java调用 Oracle数据库数据字号: 小 中 大 | 打印 发布: 2009-1-24 22:12 作者: 网络转载 来源: 查看: 67次 声明 声明: 1、任何网站转载本站点内容时需注明来自JAVA-CN.COM,否则我们有权将根据互联网著作权行政保护办法追究其相应法律责任; 2、JAVA中文站社区刊登此文只为传递信息,并不表示赞同或者反对. 通过 Delphi实现 Java调用 Oracle数据库数据JAVA中文站社区门户o ZM/C:qM6z.dQtm/E5Qt- 在开发WWW网络浏览软件中,时常要用到JAVA画一些生产管理图形,而且大量的图形数据存于网络数据库ORACLE中,现在常用的方法是使用JDBC来实现对数据库的操作,但是,如果手头没有它驱动程序,则就无法对数据库进行操作。其实,我们可以使用DELPHI开发JAVA的ORACLE数据接口软件,就具体实现方法简述如下。 0Z!S$i+wbRu- 一、系统设置: JAVA中文站社区门户!JgM6;fhCJAVA中文站社区门户7WR-n$mn!cK(a1aZ8I L- 1. 用SQL NET 设置ORACLE数据库所在服务器的IP地址别名,这里假设名字是oracle1; x)QI4e j%oY5$R Yq %CV6JB ?- 2. 建立ORACLE ODBC数据源; DHb%-AJAVA中文站社区门户V Jv*s/K- 进入控制面板的ODBC数据源,然后点击Systen DSN,再点击Add按钮选择Microsoft ODBC Driver Oracle,在Data Source Name框中输入数据源名(test),在User Name框中输入ORACLE数据用户名(假设为user1)最后在Connect String框中输入在SQL NET中建立的ORACLE数据库别名oracle1; JAVA中文站社区门户3j3J*hTw i(k9o JAVA中文站社区门户 Vo5d$W p- 建立好以上两步后,则DELPHI的BDE Administrator中自动生成一个test数据接口,如下图: JAVA中文站社区门户*x$cKpgJAVA中文站社区门户:p z+z ,v8D60|- 二、用DELPHI开发读取ORACLE数据库数据的CGI 程序 F x S9CnxB;n+U#?JAVA中文站社区门户a,H 9RPN- 进入DELPHI编程环境,去掉FORM页及其它控件,然后输入以下程序。 JAVA中文站社区门户8F#l6f1qA r$k9*,Or+V ETzdprogram testcgi; JAVA中文站社区门户?0Y8/F*q$apptype console +Z;s I9Y7uJuses FXP!cQ/l.G SysUtils, DBtables; JAVA中文站社区门户-i-Gr;B)vMvar JAVA中文站社区门户XFBWvz;O/MTable1: TTable;/用于读ORACLE数据库数据 (LR(T#sxv+qA/d|.rDatabase1: TDatabase;/用于定义ORACLE别名及用户名和口令 &(p Y6f5F#Z!i,ss,code:integer; JAVA中文站社区门户3T1R:yT,v,J&Ymy,cc:string; JAVA中文站社区门户0YgP;gA6(cbegin JAVA中文站社区门户 w&fzM&I9ewriteln(CONTENT-TYPE: TEXT/HTML);/CGI程序要求的数据头信息 ,g P6D-YF6?writeln;/保留一行空格 w8hSP&Cbmy:=paramstr(1);/读入JAVA传来的信息 Ad)dE*T2(h $RTable1:=TTable.Create(nil);/创建Table控件 JAVA中文站社区门户8rS O;o,BRDatabase1:=TDatabase.Create(nil);/创建Database控件 JAVA中文站社区门户x8n7,Pc,-hxtry ;a s9I(H-S iDatabase1.aliasname:=test;/ORACLE别名 d(j1M xDatabase1.databasename:=test; CPTv*w?Database1.Params.Clear; JAVA中文站社区门户ud3C6Cq0SDatabase1.Params.add(USER NAME=user1);/用户名 DUi7hDatabase1.Params.add(PASSWORD=userpassword);/口令 ;V)fgbDatabase1.loginprompt:=false; JAVA中文站社区门户+f%C MRN*wP 1O:Database1.connected:=true; JAVA中文站社区门户6uUt0oRrDatabase1.open; /打开数据库通道 p(j)P1h|Table1.databasename:=test; W$Yv5/jSD;eg;j/X jTable1.tablename:=cbkt;/ORACLE表名 dv*v%?sTe)Atable1.Active := True; /OPF)o6r%xTable1.open;/打开ORACLE表 JAVA中文站社区门户E7(tyj9o7gH9OTable1.first; JAVA中文站社区门户 fPE I:E;R)T0Y/计算满足条件井数 enC7L%t:A R,Mi:=0; l?3Gp)LLwhile (not table1.eof) do JAVA中文站社区门户/m2vu H*zJbegin Eh1|&$J/_-|W(C#x4cif (Table1.FieldByName(ny).asstring=my) then +NS:qYo ibegin JAVA中文站社区门户mHw(0y-s)Ywrite(Table1.FieldByName(jh).asstring+,); Te3C$?-w0Qval(Table1.Fields2.asstring,ss,code); Ot2gW)!|6jif ss0 then JAVA中文站社区门户/z$bddm EyXwrite(ss*100) 9+hMTD!v aelse JAVA中文站社区门户qG xr8shwrite(0.0); |Mgb1Gvwrite(,); 5sYUu_val(Table1.Fields3.asstring,ss,code); JAVA中文站社区门户nnu:V dY1K(jL&f,uif ss 0 then .xQt z2_#wjH+write(ss*100) JAVA中文站社区门户(e!t%X9|(Zl5Z4? pelse JAVA中文站社区门户6_5u Xc:Awrite(0.0); T-;Vv4I Cend; JAVA中文站社区门户Qh3o E0l9ztable1.next JED JwhY Dend; JAVA中文站社区门户I8gZ-y/mfinally JAVA中文站社区门户*0QA,jM%h0Ctable1.close; W:YWJtable1.free; JAVA中文站社区门户 L;lBPwS$s0wend; V8Knqcnend. 5|x.j6lO7wE9N+Sn!Ac+- 把以上程序编译后拷入服务器的CGI目录。 _2oIySPwSw*O1m9P,_T- 三、JAVA部分程序 JAVA中文站社区门户&iK9Q#hbEvT1WXKc)XK(Z n4j%/test.java 编写:王兵 1999/11/30 JAVA中文站社区门户1A.S*zh7iD yimport java.awt.*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电网行业基础知识培训课件
- 中国古代史国家的产生和社会变革统一国家的建立二讲课文档
- 电缸专业知识培训总结课件
- 三洲田施工组织设计方案
- 电线接线规范培训课件
- 电站管路安装知识培训课件
- 电磁炉安装知识培训班课件
- 电焊技术培训知识课件
- MerTK-IN-2-生命科学试剂-MCE
- 3-Epi-Ochratoxin-C-d5-生命科学试剂-MCE
- 2025年中国工商银行辽宁分行社会招聘笔试参考题库含答案解析
- 2025年电梯修理T证试题(附答案)
- 2025年中国山西省轨道交通行业市场深度研究及投资战略规划报告
- 中煤平朔集团有限公司2025校园招聘笔试内容
- 劳动合同样本范例2025年
- 碳酸钙催化性能研究-洞察分析
- 手术室护理中的团队合作与沟通技巧
- 区域教育发展现状分析
- 医疗机构从业人员廉洁从业九项准则
- 华东师大版八年级下册数学全册教案(2022年12月修订)
- 消防文员合同模板
评论
0/150
提交评论