[转载]使用WebBrowser的记录 - 无风嗜血 - 博客园

[转载]使用WebBrowser的记录 – 无风嗜血 – 博客园.

第一:新建一个类,用了获取WebBrowser元素的类

<span class="com">//需要引用 Interop.SHDocVw 和 Microsoft.mshtml</span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">Element</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="com">//根据Name获取元素</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">HtmlElement</span><span class="pln"> </span><span class="typ">GetElement_Name</span><span class="pun">(</span><span class="typ">WebBrowser</span><span class="pln"> wb</span><span class="pun">,</span><span class="kwd">string</span><span class="pln"> </span><span class="typ">Name</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">HtmlElement</span><span class="pln"> e </span><span class="pun">=</span><span class="pln"> wb</span><span class="pun">.</span><span class="typ">Document</span><span class="pun">.</span><span class="typ">All</span><span class="pun">[</span><span class="typ">Name</span><span class="pun">];</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> e</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
 
        </span><span class="com">//根据Id获取元素</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">HtmlElement</span><span class="pln"> </span><span class="typ">GetElement_Id</span><span class="pun">(</span><span class="typ">WebBrowser</span><span class="pln"> wb</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">string</span><span class="pln"> id</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">HtmlElement</span><span class="pln"> e </span><span class="pun">=</span><span class="pln"> wb</span><span class="pun">.</span><span class="typ">Document</span><span class="pun">.</span><span class="typ">GetElementById</span><span class="pun">(</span><span class="pln">id</span><span class="pun">);</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> e</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
 
        </span><span class="com">//根据Index获取元素</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">HtmlElement</span><span class="pln"> </span><span class="typ">GetElement_Index</span><span class="pun">(</span><span class="typ">WebBrowser</span><span class="pln"> wb</span><span class="pun">,</span><span class="kwd">int</span><span class="pln"> index</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">HtmlElement</span><span class="pln"> e </span><span class="pun">=</span><span class="pln"> wb</span><span class="pun">.</span><span class="typ">Document</span><span class="pun">.</span><span class="typ">All</span><span class="pun">[</span><span class="pln">index</span><span class="pun">];</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> e</span><span class="pun">;</span><span class="pln">          
        </span><span class="pun">}</span><span class="pln">
 
        </span><span class="com">//获取form表单名name,返回表单</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">HtmlElement</span><span class="pln"> </span><span class="typ">GetElement_Form</span><span class="pun">(</span><span class="typ">WebBrowser</span><span class="pln"> wb</span><span class="pun">,</span><span class="kwd">string</span><span class="pln"> form_name</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">HtmlElement</span><span class="pln"> e </span><span class="pun">=</span><span class="pln"> wb</span><span class="pun">.</span><span class="typ">Document</span><span class="pun">.</span><span class="typ">Forms</span><span class="pun">[</span><span class="pln">form_name</span><span class="pun">];</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> e</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
 
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> </span><span class="typ">CheckExistElement_Form</span><span class="pun">(</span><span class="typ">WebBrowser</span><span class="pln"> wb</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">string</span><span class="pln"> form_name</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">HtmlElement</span><span class="pln"> e </span><span class="pun">=</span><span class="pln"> wb</span><span class="pun">.</span><span class="typ">Document</span><span class="pun">.</span><span class="typ">Forms</span><span class="pun">[</span><span class="pln">form_name</span><span class="pun">];</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e </span><span class="pun">==</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">)</span><span class="pln">
                </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
            </span><span class="kwd">else</span><span class="pln">
                </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
 
        </span><span class="com">//设置元素value属性的值</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="typ">Write_value</span><span class="pun">(</span><span class="typ">HtmlElement</span><span class="pln"> e</span><span class="pun">,</span><span class="kwd">string</span><span class="pln"> value</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            e</span><span class="pun">.</span><span class="typ">SetAttribute</span><span class="pun">(</span><span class="str">"value"</span><span class="pun">,</span><span class="pln"> value</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
         
        </span><span class="com">//执行元素的方法,如:click,submit(需Form表单名)等</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="typ">Btn_click</span><span class="pun">(</span><span class="typ">HtmlElement</span><span class="pln"> e</span><span class="pun">,</span><span class="kwd">string</span><span class="pln"> s</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            e</span><span class="pun">.</span><span class="typ">InvokeMember</span><span class="pun">(</span><span class="pln">s</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
 
</span><span class="typ">Element</span><span class="pln"> el </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Element</span><span class="pun">();</span><span class="pln">
el</span><span class="pun">.</span><span class="typ">Write_value</span><span class="pun">(</span><span class="pln">el</span><span class="pun">.</span><span class="typ">GetElement_Id</span><span class="pun">(</span><span class="typ">IDRWebBrowser</span><span class="pun">,</span><span class="pln"> </span><span class="str">"patient_name"</span><span class="pun">),</span><span class="pln"> dt</span><span class="pun">.</span><span class="typ">Rows</span><span class="pun">[</span><span class="lit">0</span><span class="pun">][</span><span class="str">"Patient_Name"</span><span class="pun">].</span><span class="typ">ToString</span><span class="pun">());</span><span class="pln">
</span><span class="com">//IDRWebBrowser  浏览器控件 下同</span><span class="pln">
 
</span><span class="typ">SHDocVw</span><span class="pun">.</span><span class="typ">WebBrowser</span><span class="pln"> wb </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">SHDocVw</span><span class="pun">.</span><span class="typ">WebBrowser</span><span class="pun">)</span><span class="typ">IDRWebBrowser</span><span class="pun">.</span><span class="typ">ActiveXInstance</span><span class="pun">;</span><span class="pln">
                </span><span class="typ">IHTMLDocument2</span><span class="pln"> doc2 </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">IHTMLDocument2</span><span class="pun">)</span><span class="pln">wb</span><span class="pun">.</span><span class="typ">Document</span><span class="pun">;</span><span class="pln">
                </span><span class="typ">IHTMLElementCollection</span><span class="pln"> input </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">IHTMLElementCollection</span><span class="pun">)</span><span class="pln">doc2</span><span class="pun">.</span><span class="pln">all</span><span class="pun">.</span><span class="pln">tags</span><span class="pun">(</span><span class="str">"input"</span><span class="pun">);</span><span class="com">//获取input元素</span><span class="pln">
                </span><span class="typ">IHTMLElementCollection</span><span class="pln"> </span><span class="kwd">select</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">IHTMLElementCollection</span><span class="pun">)</span><span class="pln">doc2</span><span class="pun">.</span><span class="pln">all</span><span class="pun">.</span><span class="pln">tags</span><span class="pun">(</span><span class="str">"select"</span><span class="pun">);</span><span class="com">//获取select元素</span><span class="pln">
 
</span><span class="com">//性别 input元素</span><span class="pln">
                </span><span class="typ">IHTMLElement</span><span class="pln"> elementsex </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">IHTMLElement</span><span class="pun">)</span><span class="pln">input</span><span class="pun">.</span><span class="pln">item</span><span class="pun">(</span><span class="str">"sex"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
                </span><span class="typ">IHTMLInputElement</span><span class="pln"> </span><span class="typ">InputElementsex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">IHTMLInputElement</span><span class="pun">)</span><span class="pln">elementsex</span><span class="pun">;</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">dt</span><span class="pun">.</span><span class="typ">Rows</span><span class="pun">[</span><span class="lit">0</span><span class="pun">][</span><span class="str">"Sex"</span><span class="pun">].</span><span class="typ">ToString</span><span class="pun">()</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"男"</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="typ">InputElementsex</span><span class="pun">.</span><span class="pln">value </span><span class="pun">=</span><span class="pln"> </span><span class="str">"1"</span><span class="pun">;</span><span class="pln">
                    </span><span class="typ">InputElementsex</span><span class="pun">.</span><span class="lit">@checked</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
                </span><span class="kwd">else</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="typ">InputElementsex</span><span class="pun">.</span><span class="pln">value </span><span class="pun">=</span><span class="pln"> </span><span class="str">"2"</span><span class="pun">;</span><span class="pln">
                    </span><span class="typ">InputElementsex</span><span class="pun">.</span><span class="lit">@checked</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
</span><span class="com">//select元素</span><span class="pln">
</span><span class="typ">IHTMLElement</span><span class="pln"> elementgroup_id </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">IHTMLElement</span><span class="pun">)</span><span class="kwd">select</span><span class="pun">.</span><span class="pln">item</span><span class="pun">(</span><span class="str">"group_id"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
                </span><span class="typ">IHTMLSelectElement</span><span class="pln"> </span><span class="typ">SelectElementgroup_id</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">IHTMLSelectElement</span><span class="pun">)</span><span class="pln">elementgroup_id</span><span class="pun">;</span><span class="pln">
                </span><span class="com">//SelectElementgroup_id.value = dt.Rows[0]["Profession"].ToString();</span><span class="pln">
                </span><span class="typ">SelectElementgroup_id</span><span class="pun">.</span><span class="pln">value </span><span class="pun">=</span><span class="pln"> zy</span><span class="pun">.</span><span class="typ">ToString</span><span class="pun">();</span><span class="pln">
                </span><span class="typ">IDRWebBrowser</span><span class="pun">.</span><span class="typ">Document</span><span class="pun">.</span><span class="typ">All</span><span class="pun">[</span><span class="str">"group_id"</span><span class="pun">].</span><span class="typ">RaiseEvent</span><span class="pun">(</span><span class="str">"onchange"</span><span class="pun">);</span><span class="pln">
 
</span><span class="com">//获取Iframe元素</span><span class="pln">
</span><span class="typ">IHTMLDocument2</span><span class="pln"> doc11 </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">IHTMLDocument2</span><span class="pun">)</span><span class="typ">IDRWebBrowser</span><span class="pun">.</span><span class="typ">Document</span><span class="pun">.</span><span class="typ">Window</span><span class="pun">.</span><span class="typ">Frames</span><span class="pun">[</span><span class="str">"addriframe"</span><span class="pun">].</span><span class="typ">Document</span><span class="pun">.</span><span class="typ">DomDocument</span><span class="pun">;</span><span class="pln">
doc11</span><span class="pun">.</span><span class="pln">url</span><span class="pun">=</span><span class="str">"自己定义它的src"</span><span class="pun">;</span><span class="pln">
 
</span><span class="com">//如果需要执行元素的事件,比如onchange事件,onclick事件,onblur事件 可以用以下两种方式</span><span class="pln">
</span><span class="typ">WebBrowser</span><span class="pun">执行</span><span class="pln">dom</span><span class="pun">里面的</span><span class="pln">js</span><span class="pun">,以下是两种方式:</span><span class="pln">
</span><span class="lit">1.IDRWebBrowser</span><span class="pun">.</span><span class="typ">Document</span><span class="pun">.</span><span class="typ">All</span><span class="pun">[</span><span class="str">"b_year"</span><span class="pun">].</span><span class="typ">RaiseEvent</span><span class="pun">(</span><span class="str">"onblur"</span><span class="pun">);</span><span class="com">//执行元素name='b_year'的onblur事件,如果是onclick事件改一下就行了</span><span class="pln">
</span><span class="lit">2.IDRWebBrowser</span><span class="pun">.</span><span class="typ">Document</span><span class="pun">.</span><span class="typ">InvokeScript</span><span class="pun">(</span><span class="str">"changeDiseaseid1"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="kwd">object</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">InputElementselDisease_1</span><span class="pln"> </span><span class="pun">});</span><span class="com">//执行changeDiseaseid1这个方法,后面是带参数的,这个网上的解释比较多,我建议用第一种,第一种好用。</span>
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

登录

注册