<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Vb.net</title><link>http://webuc.net/yunguang/category/265.aspx</link><description>Vb.net</description><managingEditor>云广</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>云广</dc:creator><title>在vb.net中使用webbrowser控件和mshtml以及流操作体会(vb.net内嵌IE,拆取 Web 页)</title><link>http://webuc.net/yunguang/archive/2005/02/25/2871.aspx</link><pubDate>Fri, 25 Feb 2005 12:57:00 GMT</pubDate><guid>http://webuc.net/yunguang/archive/2005/02/25/2871.aspx</guid><wfw:comment>http://webuc.net/yunguang/comments/2871.aspx</wfw:comment><comments>http://webuc.net/yunguang/archive/2005/02/25/2871.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://webuc.net/yunguang/comments/commentRss/2871.aspx</wfw:commentRss><trackback:ping>http://webuc.net/yunguang/services/trackbacks/2871.aspx</trackback:ping><description>&lt;p&gt;需求为:到某一网站抓取查询结果.环境为vb.net&lt;/p&gt; &lt;p&gt;从0开始,一开始具体需要用到.net里的具体什么东东都不清楚,于是就一顿瞎搜索.又是google,又是baidu,yisou......胡乱搜的内容有.net ie,拆分网页 .net,内嵌ie等等.没过多久能得知webbrowser这个控件.&lt;/p&gt; &lt;p&gt;其中对我有帮助比较大的文章是&lt;a href="http://www.microsoft.com/china/msdn/Archives/workshop/scrape.asp"&gt;http://www.microsoft.com/china/msdn/Archives/workshop/scrape.asp&lt;/a&gt;&lt;/p&gt; &lt;p&gt;只是这里介绍的vb环境.到.net也没什么太大差别,别笑!我最开始找&lt;em&gt;shdocvw.dll&lt;/em&gt; 和 &lt;i&gt;mshtml.dll添加引用时候都费了半天劲.因为大家都说webbrowser.而.net里写的是microsoft web 浏览器..&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;先按照上面的文章练一练!&lt;/em&gt;&lt;/p&gt; &lt;p&gt;不说废话了.&lt;/p&gt; &lt;p&gt;先做一个输入框,和一个按钮,供输入信息,和提交信息.&lt;/p&gt; &lt;p&gt;在按纽的click事件中写:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim postdata As String() = {"searchText=" + Me.searchText.Text}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim strUrl As String = "&lt;a href="http://www.cnterm.org/term.asp"&gt;http://&lt;/a&gt;"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim SessionHtml As String = PostDate(strUrl, postdata)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '产生临时文件&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim sw As StreamWriter = New StreamWriter("D:\1.htm", False, Encoding.GetEncoding("GB2312"))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sw.WriteLine(SessionHtml)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sw.Close()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.AxWebBrowserFill.Navigate("D:\1.htm")&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;PostDate函数如下:&lt;/p&gt; &lt;p&gt;Public Function PostDate(ByVal url As String, ByVal PostData() As String) As String&lt;/p&gt; &lt;p&gt;Dim Post As String = ""&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '拼接成传递变量&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each s As String In PostData&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Post += s + "&amp;amp;"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Post = Post.Substring(0, Post.Length - 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim html As String = ""&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim encoding As Encoding = encoding.GetEncoding("GB2312")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim data As Byte() = encoding.GetBytes(Post)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim myRequest As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myRequest.Method = "post"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myRequest.ContentType = "application/x-www-form-urlencoded"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'myRequest.ContentType = "text/asp"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myRequest.ContentLength = data.Length&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim newStream As Stream = myRequest.GetRequestStream()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newStream.Write(data, 0, data.Length)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newStream.Close()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim resp As HttpWebResponse = CType(myRequest.GetResponse(), HttpWebResponse)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim sr As StreamReader = New StreamReader(resp.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '返回html代码的字符串&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html = sr.ReadToEnd()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sr.Close()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return html&lt;/p&gt; &lt;p&gt;&amp;nbsp;End Function&lt;/p&gt; &lt;p&gt;这样就可以了.&lt;/p&gt; &lt;p&gt;至于直接把html显示在webbrowser控件中,而不通过临时文件,在网上搜到的都是delphi办法.而.net似乎没有完美的解决办法.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;曾经试过:&lt;/p&gt; &lt;p&gt;'AxWebBrowserFill.Navigate(SessionHtml)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Me.AxWebBrowserFill.Document.write(SessionHtml + "&amp;lt;font size=5&amp;gt;haga&amp;lt;/font&amp;gt;")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Me.axScriptLet.url = "about:blank" + SessionHtml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Me.AxWebBrowserFill.Document.write(SessionHtml)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'doc = Me.AxWebBrowserFill.Document&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'doc.body.innerHTML = SessionHtml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'doc.write(SessionHtml)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;往往只是第一次成功,而且中间会涉及到html内双引号的问题.&lt;/p&gt; &lt;p&gt;也有网上说按如下方法:&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''在WebBrowser中显示报告内容字段&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Dim doc As IHTMLDocument2 = CType(AxWebBrowserFill.Document, IHTMLDocument2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Dim bodyElement As IHTMLElement = CType(doc.body, IHTMLElement)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''bodyElement.innerHTML = SessionHtml + "&amp;lt;font size=5&amp;gt;haga&amp;lt;/font&amp;gt;"&lt;/p&gt; &lt;p&gt;而这个方法我就没有奏效过!&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;img src ="http://webuc.net/yunguang/aggbug/2871.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>云广</dc:creator><title>使用TreeView实现无限级扩展节点</title><link>http://webuc.net/yunguang/archive/2004/12/18/2395.aspx</link><pubDate>Sat, 18 Dec 2004 02:16:00 GMT</pubDate><guid>http://webuc.net/yunguang/archive/2004/12/18/2395.aspx</guid><wfw:comment>http://webuc.net/yunguang/comments/2395.aspx</wfw:comment><comments>http://webuc.net/yunguang/archive/2004/12/18/2395.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://webuc.net/yunguang/comments/commentRss/2395.aspx</wfw:commentRss><trackback:ping>http://webuc.net/yunguang/services/trackbacks/2395.aspx</trackback:ping><description>&lt;p&gt;功能实现要求：&lt;/p&gt; &lt;p&gt;操作环境vb.net和oracle9i&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;由于数据量很大，所以不能利用rs结果集一次读出，在往treeview节点上填充。&lt;/p&gt; &lt;p&gt;需要填充树型节点的字段内数据形式为以"."分割&lt;/p&gt; &lt;p&gt;如：01&amp;nbsp;&amp;nbsp; 01.01 01.02 01.01.01 02 02.01 02.01 ............................&lt;/p&gt; &lt;p&gt;利用oracle自身instr函数，可以按"."数分割。并返回所需要的结果集，初始化加载读取不带"."字段，第一次读取带一个"."…………&lt;/p&gt; &lt;p&gt;至于sqlserver数据库与oracle的函数书写略有不同，可以到google，csdn等地方去查找。&lt;/p&gt; &lt;p&gt;sql语句的大致写法如下：&lt;/p&gt; &lt;p&gt;If pDotCount = 0 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sqlString = "select t.需要分割的字段,t.cname from&amp;nbsp;表名 t where Instr(t.icsn, '.', 1, 1)=0"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sqlString = "select t.需要分割的字段,t.cname from&amp;nbsp;表名 t where Instr(t.icsn, '.', 1," &amp;amp; pDotCount &amp;amp; ")&amp;gt;0 and Instr(t.icsn, '.', 1, " &amp;amp; (pDotCount + 1) &amp;amp; ")=0 and Instr(t.icsn,'" &amp;amp; pParent &amp;amp; "',1,1)=1"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/p&gt; &lt;p&gt;pDotCount为需要读取的字段中"."的个数&lt;/p&gt; &lt;p&gt;然后通过双击事件获得父节点(即为选中节点)，sql语句中pParent，返回属于该父节点的子节点，这样一级一级双击即可实现无限扩展，直至走到数据最后一层为止&lt;/p&gt; &lt;p&gt;检索定位任一节点&lt;/p&gt; &lt;p&gt;主要是在于初始选择节点的定位。此处略去，如有兴趣，可以直接和我联系，互相学习。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;MSN：&lt;a href="mailto:yun15291li@hotmail.com"&gt;yun15291li@hotmail.com&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Email：&lt;a href="mailto:ygyunguang@yahoo.com.cn"&gt;ygyunguang@yahoo.com.cn&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://webuc.net/yunguang/aggbug/2395.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>