本文主要對比,VBScript 中 CreateObject("WScript.Shell") 和 CreateObject("Shell.Application") 之間,有什麼不同。 代碼上的不同: 代碼如下: 這裡主要記錄下,兩種看似類似的方法,到底有什麼不同: 1. 首先它倆,來自於完全不同 ...
本文主要對比,VBScript 中 CreateObject("WScript.Shell") 和 CreateObject("Shell.Application") 之間,有什麼不同。
代碼上的不同:
代碼如下:
'第一種方法
Set oShell = CreateObject("WScript.Shell")
oShell.Run "xxxx.exe"
'第二種方法
Set oShell = CreateObject("shell.application")
oShell..ShellExecute "xxxx.exe", "", "", "", 1
這裡主要記錄下,兩種看似類似的方法,到底有什麼不同:
- 首先它倆,來自於完全不同的兩個對象(Object),或者說兩個不同的 COM Object,也就是說來自於兩個不同的 DLL 文件
- 第一種方法下,使用的 Object,源自於 wshom.ocx 文件
- Wscript.shell 是 Wshshell 的 ProID (Programmatic IDentifier)
- 而,這個 Wshshell 對象,則存放在 wshom.ocx 文件中
- 第二種方法下,使用的 Object,源自於 shell32.dll 文件
- 第一種方法下,使用的 Object,源自於 wshom.ocx 文件
- 再者,這兩個不同 Object,是用不同的途徑,去完成不同的任務
使用上的不同:
這裡,就以打開Chrome瀏覽器的方法,為實例,來說明使用上的不同!
url = "www.google.com"
'第一種方法
set oShell = WScript.CreateObject("WScript.Shell")
oShell.run "chrome.exe"
WScript.sleep 1000
oShell.sendkeys url
WScript.sleep 1000
oShell.sendkeys "{ENTER}"
'第二種方法
Set oShell = CreateObject("shell.application")
oShell.ShellExecute "chrome", url,"","",1
'如果Chrome是預設瀏覽器的話
set oShell = CreateObject("WScript.Shell")
oShell.run url
所以,從這個實例中,可以看出 oShell.ShellExecute 方法,更加靈活。
參考閱讀:
- wshom.ocx_百度百科
- WScript.Shell vs Shell.Application
- Diff between wscript.shell and shell.application
- Shell.ShellExecute method | Microsoft Docs
- shell32.dll Windows process - What is it?
- Opening browser on a variable page using vbscript - Stack Overflow