2010-11-17

Windows VISTA / Windows 7 不能使用 VBScript 的 CommanDialog (VBScript CommonDialog in Windows VISTA and Windows 7)

不少人在 Windows 處理簡單的程序時,往往會用到 VBScript
而使用 VBScript 涉及檔案存取時不少人都會想到使用 File Dialog 讓使用者有一個具 GUI 的檔案選擇工具
VBScript is a light, useful programming language (script) in Windows OS
We can write a VBS with notepad or any text editor
We always select a file with File Dialog
File Dialog is a user-friendly GUI for user to select a specific file

可是在下在 Windows 7 使用時發現,
Windows VISTA 及 Windows 7 在預設系統中是沒有該模組可供使用(翻查網上資料亦已證實)
However, Windows VISTA and Windows 7 don't have this module to use (Search on the Internet)
CreateObject("UserAccounts.CommonDialog")
CreateObject("MSComDlg.CommonDialog")

最後還得利用 Internet Explorer 去協助
現今一個正常的 Windows 系統,大都預設安裝 Internet Explorer
利用 Windows 及 IE 的特性讓 VBScript 嵌入 IE 中 (因為只有在 Windows 使用 IE 才可以讓 VBScript 運作)
<script type="text/vbscript"></script>
那為何要利用 IE ?
因為 HTML 提供 <input type="file"/> 讓使用者有一個具 GUI 的檔案選擇工具
Finally, I re-design the VBS into HTML format.
Normally, you must install Internet Explorer in your Windows System.
You can embed VBScript in script tag. (<script type="text/vbscript"></script>)
Use <input type="file"/> to act a CommonDialog
Use <input type="button"/> to act a invoker (optional)

我們可以編寫 Sub 或 Function 再讓 DOM event 來模擬 VBScript 運作
以下是一個簡單的示範

<script type="text/vbscript">
Sub Invoke
    Set InputFile = document.getElementsByTagName("input")(0)
    Msgbox InputFile.Value
End Sub
</script>
<input type="file"/>
<input type="button" value="執行" onclick="Invoke"/>

測試當然必須要在 Windows 系統並使用 IE 瀏覽
注意由於使用了 ActiveXObject ,必定會發出警告,若需要讓 ActiveXObject 運作就必須允許

另外若 VBScript 涉及使用者的檔案處理如:建立、修改、刪除等
在執行 ActiveXObject 時會再出現一次彈出式警告,若執行便需要按「確定」

因此在下亦在此希望使用 IE 瀏覽網頁的電腦使用者
在瀏覽網頁的過程中遇到這情況不要胡亂按「確定」,後果可能非常嚴重

沒有留言 :

張貼留言