程序說明
本程序用於打開IE、鏈接到指定的網頁、獲取IE地址欄中的URL地址信息及該窗口名稱、激活最近打開的窗口以及關閉最近打開的窗口。程序的界面如圖1:
設計思想
使用Delphi編程控制IE的方法有多種,在本程序中使用DDE來控制IE,應注意須先確保IE已經運行,因為此時IE要作為DDE服務器,用戶的程序只能作DDE客戶端,而DDE客戶端無法與一個沒有運行的服務器進行數據交換。在本程序中調用API函數ShellExecute來打開IE。
圖1在本程序中使用DDE客戶端時用到了類TDdeClientConv的以下幾個函數及過程:
function SetLink(Service:String;Topic:String):Boolean;function OpenLink:Boolean;function RequestData(const Item:String):Pchar;procedure CloseLink; |
其中,參數Service為DDE服務器的ApplicationName,對IE來說就是Iexplore;參數Topic是DDE會話的TopicName,不同功能對應的Topic不同;參數Item為會話的ItemName,也因功能不同而不同。函數SetLink用來設置會話主題,若成功返回True,否則返回False;函數RequestData用來返回會話的數據。
設計步驟
新建一個應用程序,為窗體加入兩個Edit組件、6個Button組件。各組件屬性如圖2:
圖2在uses中加入對DDEman,ShellAPE和ComObj單元的引用,並定義一個TDdeClientConv類型的全局變量DDE。
編寫相關代碼
...... var DDE:TDdeClientConv; //DDE為客戶端全局變量implementation {$R *.DFM} //創建窗體時創建DDE客戶端procedure TForm1.FormCreate(Sender: TObject); begin DDE: =TDdeClientConv.Create(Self); end; //單擊Open IE啟動默認瀏覽器並自動打開指定的網頁(若IE不是默認瀏覽器,需手工打開) procedure TForm1.Button3Click(Sender: TObject); begin / /調用ShellExecute打開默認瀏覽器,將窗口模式設為SW_SHOWNORMAL ShellExecute(Handle,nil,PChar(''http://www.chinaren.com/index.shtml''),nil,nil,SW_SHOWNORMAL); end; //單擊Get URL按鈕獲取IE地址欄URL以及對應窗口標題procedure TForm1.Button1Click(Sender: TObject); begin //設置會話連接成功if DDE.SetLink(''Iexplore'', ''WWW_GetWindowInfo'') then begin DDE.OpenLink; //返回信息並在組件Edit1中顯示Edit1.Text:=DDE.QequestData(''-1''); DDE.CloseLink; end else ShowMessage(''IE沒在運行'') ; end; //單擊Open URL按鈕鏈接到指定網頁procedure TForm1.Button2Click(Sender: TObject); begin if DDE.SetLink(''Iexplore'', ''WWW_ OpenURL'') then begin //鏈接到指定Web頁DDE.OpenLink; DDE.RequestData(Edit2.Text); DDE.CloseLink; end else ShowMessage(''IE沒在運行''); end; //單擊Activate IE按鈕激活最近打開的IE窗口procedure TForm1 .Button4Click(Sender: TObject); begin if DDE.SetLink(''Iexplore'', ''WWW_Activate'') then begin DDE.OpenLink; DDE.RequestData(''-1''); DDE.CloseLink; end else ShowMessage(''IE沒有運行''); end; //單擊Close IE按鈕關閉最近打開的IE窗口procedure TForm1.Button5Click(Sender: TObject); begin if DDE.SetLink(''Iexplore'', '' WWW_Exit'') then begin DDE.OpenLink; DDE.RequestData(''WWW_Exit''); DDE.CloseLink; end else ShowMessage(''IE沒有運行''); end. |