2010年12月15日 星期三

[技術筆記] 在windows server 2008的工作排程中執行IE開啟網頁

源起
在開發網路程式(ASP、ASP.NET...等)時,有些功能必須重複執行,通常會使用排程來設定這樣的工作。
但是如果程式設計師只有網路程式的經驗,不會寫WIN-FORM程式,好像也沒關係,寫成WEB版再設定以IE開啟即可。

以前的解決方案

指令如下:

"C:\Program Files\Internet Explorer\iexplore.exe" "http://url/?par1=value"

注意:因為路徑有空白,因此要加上"",否則會有找不到程式的錯誤

將指令設定到『工作排程』中執行即可完成此項任務。

問題點
但是這樣的解決方案看似容易,確有幾個問題:
1. IE是CLIENT端程式,必須在登入狀況下才能執行
2. IE會自動開啟,但是不會自動結束
3. IE是個大程式,佔用很多資源

2、3還好解決,用『工作排程』可以結束執行中的IE
1可以用自動登入來解決



最佳解決方案
最近SERVER換成Windows Server 2008,重新思考這個問題,希望能有較好的解決方案。
網路找了一下,發現有人用VBS來取代IE,是個不錯的方法,VBS程式碼列表如下:

Call OpenURL()
Sub OpenURL()
'Force the script to finish on an error.
On Error Resume Next


'Declare variables
Dim objRequest
Dim URL
Set objRequest = CreateObject("Microsoft.XMLHTTP")


'Put together the URL link appending the Variables.
URL = "http://url?par1=value"


'Open the HTTP request and pass the URL to the objRequest object
objRequest.open "POST", URL , false


'Send the HTML Request
objRequest.Send


'Set the object to nothing
Set objRequest = Nothing
End Sub


主要原理是建立一個Microsoft.XMLHTTP object來取代IE

執行VBS: cscript xxx.vbs
執行時會開啟一個DOS CMD,執行完自動結束,比開啟IE快10倍

如此一來,一次解決以上三個問題,太帥了

沒有留言: