预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共25页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

WebBrowser组件和MSHTML在Delphi中的使用 由于项目需要,近来研究了一下WebBrowser组件和MSHTML在Delphi中的使用,整理了一下这段时间研究的结果,写下来一是方便大家查阅,二也可以加深我自己的记忆.希望能对大家有所帮助……,同时,如果有更好的处理方式或者我没有提到的问题,请大家也告诉我哦,咱们一块进步…...,其中一部分是我从网络中搜集的资料,谢谢那些兄弟们……MSHTML把HTML页面中的元素封装成了IHTMLInputElement、IHTMLInputButtonElement、IHTMLInputTextElement、IHTMLTextAreaElement、IHTMLTitleElement、IHTMLFormElement等等组件接口。在程序中可以通过MSHTML提供的IHTMLDocument2接口得到整个Document对象,IHTMLElementCollection接口得到所有页面元素的集合,通过该接口的Item方法可以得到具体的某个组件,然后设置和读取该组件的属性值。下面是一些常用功能的事例代码.1.打开某个页面:web.Navigate(ExtractFilePath(Application.ExeName)+'Template/login.html');2.取出页面中某个HtmlElement的Value属性值:functionGetValueByElementName(web:TWebBrowser;elementName:string;index:integer):string;beginresult:=(((web.DocumentasIHTMLDocument2).body.allasIHTMLElementCollection).item(elementName,index)asIHTMLInputElement).valueend;3.给HtmlElement设置Value属性procedureSetValueTextAreaName(web:TWebBrowser;elementName,value:string;index:integer);begin(((web.DocumentasIHTMLDocument2).body.allasIHTMLElementCollection).item(elementName,index)asIHTMLTextAreaElement).value:=value;end;4.判断页面执行结果是否成功因为Web应用中如果出错的一般是采用错误页面的方式呈现给最终用户,所以我们也无法抓到Http错误,只能通过在webBeforeNavigate2事件中将URL参数记录到全局变量中,然后在webDocumentComplete事件中根据URL参数和全局变量中的URL参数来判断执行结果是否正确.当然,这样需要将页面地址编码到代码中,降低了灵活性,但是这也是我能想到的唯一的方法,如果大家有什么好的方法,请告诉我哦.5.屏蔽鼠标右键和某些快捷键本功能需要在webBrowser的窗口中加入ApplicationEvents组件,设置它的OnMessage事件代码如下即可.procedureTwebAdapterForm.ApplicationEvents1Message(varMsg:tagMSG;varHandled:Boolean);const_KeyPressMask=$80000000;begin//禁用右键withMsgdobeginifnotIsChild(web.Handle,hWnd)thenExit;Handled:=(message=WM_RBUTTONDOWN)or(message=WM_RBUTTONUP)or(message=WM_CONTEXTMENU);end;//禁止Ctrl+N//禁止Ctrl+F//禁止Ctrl+AifMsg.message=WM_KEYDOWNthenbeginif((Msg.lParamand_KeyPressMask)=0)and(GetKeyState(VK_Control)<0)and((Msg.wParam=Ord('N'))or(Msg.wParam=Ord('F'))or(Msg.wParam=Ord('A')))thenbeginHandled:=True;end;end;end;6.在页面关闭的时候,同时关掉包含页面的VCLForm.(仅限InternetExplorer6.0)本功能需要卸载掉Delphi自带的WebBrowser组件,安装ActionX组件(MicrosoftInternetControlsV1.1),而且以后的程序只能运行在