visual c#打造「瀏覽器」
visual c#是微軟推出的新一代程式開發語言,visual c#實現許多功能是通過呼叫.net框架為其中所有.net程式開發語言提供的乙個公用的軟體包——.net framework sdk。在這個軟體包中提供了大量並且十分豐富的類庫,可以說,沒有這個軟體開發包,visual c#就寸步難行,無法編寫哪怕乙個功能的程式。但這樣也會出現乙個問題,如果在.net framework sdk軟體包中沒有涉及到的功能,而在其他的第三方的com元件中卻提供了,那麼這些元件是否可以被visual c#使用。答案是:直接使用是不可以的,但這些com元件經過一定轉換後就可以。這種轉換就是非受管**(unmanaged code)到受管**(managed code)的轉換。因為這些com元件一般都是非受管**(unmanaged code),而編譯visual c#檔案時候要使用的類庫卻只能為受管**(managed code),這就是說要在visual c#中使用那些非受管**元件,就必須把這些非受管**元件轉換成受管**元件。在.net框架中專門提供了乙個程式「aximp.exe」來實現由com元件到winform元件的轉換。那麼這個檔案在**?假設你安裝.net framework sdk在「c」盤,那麼在「c:\program files\microsoft.net\frameworksdk\bin」目錄中就可以找到這個檔案。如果你安裝.net framework sdk在其他目錄或者磁碟,依照上述的目錄順序就可以找到這個檔案了。
下面用visual c#來做乙個「瀏覽器」,看看在visual c#是如何使用com元件的。
一.本文程式設計和執行的軟體環境
(1).微軟公司視窗2000伺服器版
(2)..net framework sdk beta 2
二.程式設計的思路以及關鍵步驟的解決方法
(1).把轉換com元件為winform元件:
其實實現這種轉換十分的簡單,我們知道微軟web瀏覽器com元件名稱為「shdocvw.dll」,由於我們使用的是視窗2000,所以這個檔案是存放在「c:\winnt\system32」目錄中,如果你使用的是視窗98或者是視窗me,那麼此元件存放的位置是「c:\windows\system」。「aximp.exe」檔案後面有許多的引數,你可以通過「aximp /?」來了解,在本文中只使用下列簡單的命令就可成功轉換:
aximp c:\winnt\system32\shdocvw.dll
執行上述命令後就可以實現轉換,並在當前目錄中產生「shdocvw.dll」和「axshdocvw.dll」二個檔案。具體如下圖:
圖01:轉換com元件為winform元件
(2).在程式中使用轉換後元件:
在「axshdocvw.dll」中定義了命名空間「axshdocvw」,在此命名空間中定義了乙個「axwebbrowser」元件,這個元件中有若干個方法和屬性,visual c#就是通過這些方法和屬性來實現瀏覽器的一些基本功能的。使用此瀏覽器元件和使用其他的winform元件的過程是一樣的,首先要匯入命名空間,然後在程式中繼承此命名空間中定義的瀏覽器元件,最後設定這個繼承後的元件的屬性和方法。具體如下:
< i > .匯入命名空間,具體**如下:
using axshdocvw ;
< ii> . 繼承此命名空間中定義的瀏覽器元件,具體**如下:
private axwebbrowser axwebbrowser1 ;
(3).通過轉換後元件來實現瀏覽器的一些基本功能:
瀏覽器的主要功能就是能夠到指定的位址瀏覽資訊,當然在具體的瀏覽中還有一些基本的功能,譬如:「前進」、「後退」、「停止」、「重新整理」、「主頁」等,這些功能都可以通過「axwebbrowser」元件來實現。下面就來具體介紹:
在程式中,**是填寫在元件「textbox1」中的,「瀏覽指定位址」功能是通過程式的按鈕「轉到」來實現的。下面是按鈕「轉到」按動後的程式**:
private void button1_click ( object sender , system.eventargs e )
< ii > .瀏覽器的「前進」、「後退」、「停止」、「重新整理」、「主頁」功能:
在「axwebbrowser」元件中對這些功能都有乙個具體的方法來與之對應,具體如下面**:
private void *******1_buttonclick ( object sender , *******buttonclickeventargs e )
//瀏覽器中的「前進」
if ( e.button == tb2 )
//瀏覽器中的「停止」
if ( e.button == tb3 )
//瀏覽器中的「重新整理」
if ( e.button == tb4 )
//瀏覽器中的「主頁」
if ( e.button == tb5 ) }
< iii > .當然掌握了上面的知識,你就可以用visual c#做出乙個基本的瀏覽器了,但下面這些也是不可缺少的,因為下面這些**將使得你做的瀏覽器更專業。下面**的作用是使得瀏覽介面隨著窗體的變化而變化,按鈕和文字框也要隨著窗體的變化而變化。
button1.anchor = ( anchorstyles.top | anchorstyles.right ) ;
//定位「轉到」按鈕元件與窗體的上、右邊框保持一致
textbox1.anchor = ( ( anchorstyles.top | anchorstyles.left )
| anchorstyles.right ) ;
//定位位址文字框元件與窗體的上、左、右邊框保持一致
axwebbrowser1.anchor = ( ( ( anchorstyles.top | anchorstyles.bottom )
| anchorstyles.left )
| anchorstyles.right ) ;
//定位瀏覽器元件與窗體的上、下、左、右邊框保持一致
三.源程式**(brower.cs)
了解有了上面的這些,就可以比較容易編寫乙個屬於自己的瀏覽器了,下面是用visual c#做的瀏覽器源程式**,他具備了ie瀏覽器的一些常用的功能。
using system ;
using system.drawing ;
using system.collections ;
using system.componentmodel ;
using system.windows.forms ;
using system.data ;
using axshdocvw ;
public class form1 : form
//清除程式中使用過的資源
protected override void dispose ( bool disposing ) }
base.dispose ( disposing ) ;
} //初始化窗體中的各個元件
private void initializecomponent ( )
static void main ( )
//實現瀏覽器主要功能
private void *******1_buttonclick ( object sender , *******buttonclickeventargs e )
//瀏覽器中的「前進」
if ( e.button == tb2 )
//瀏覽器中的「停止」
if ( e.button == tb3 )
//瀏覽器中的「重新整理」
if ( e.button == tb4 )
//瀏覽器中的「主頁」
if ( e.button == tb5 ) }
//瀏覽指定的web位址
private void button1_click ( object sender , system.eventargs e ) }
四.編譯源程式和編譯後的執行程式的執行介面
在經過如下命令編譯後,就可以得到可以自己的瀏覽器了
csc /t:winexe /r:axshdocvw.dll /r:shdocvw.dll /r:system.dll
/r:system.windows.forms.dll /r:system.drawing.dll brower.cs
圖02:用visual c#做的「瀏覽器」的執行介面
五.總結
至此乙個功能相對完備的「瀏覽器」就算完成了,其實用visual c#做「瀏覽器」的過程,也就是visual c#中使用com元件的過程。掌握了com元件在visual c#使用方法,就可以利用visual c#編寫出功能更強大,適應性更強的軟體來,但編寫的過程又十分的簡單。
Visual C 打造 「瀏覽器」
visual c 打造 瀏覽器 visual c 是微軟推出的新一代程式開發語言,visual c 實現許多功能是通過呼叫.net框架為其中所有.net程式開發語言提供的乙個公用的軟體包 net framework sdk。在這個軟體包中提供了大量並且十分豐富的類庫,可以說,沒有這個軟體開發包,vi...
用Visual C 打造多頁面網頁瀏覽器
一 簡介 大家都知道,目前比較流行的網路瀏覽器如mozilla firefox以及myie2等都具有多頁面瀏覽功能,每開啟乙個新的頁面都自動產生乙個新的選項卡頁面,頁面的關閉也十分簡便。這種設計思想使得使用者在瀏覽多個網頁時桌面十分簡潔,也避免了使用者等待單頁面顯示的苦惱。由於這些瀏覽器一般都支援操...
用Visual C 打造多頁面網頁瀏覽器
注意,每乙個webbrowser控制項都有乙個tag,我定義成乙個簡單的class,它用來包含一些該控制項相關的獨有資訊。請看 public class he webbrowsertag 三 實現 查詢 檢視頁面原始檔 選項 對話方塊等功能 注意 本例程中使用了乙個未公開的guid,其在將來的系統中...