Javascript與ActiveX控件交互是一種比較常見的技術。Javascript可以創建一個ActiveX對象,并通過該對象實現與本地系統的交互,可以實現訪問用戶電腦的系統資源、管理本地文件、讀寫注冊表等等。接下來我們將會探討基于Javascript與ActiveX交互的幾個實際案例。
1. 訪問打印機
我們首先看一個簡單的例子,通過JavaScript與ActiveX對象進行交互來獲取打印機信息。
<script language="JavaScript"> function getPrinterName() { try { var wbemFlagReturnImmediately = 0x10; var wbemFlagForwardOnly = 0x20; var strComputer = "."; var objWMIService = GetObject("winmgmts:\\\\" + strComputer + "\\root\\CIMV2"); var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly); var enumItems = new Enumerator(colItems); var output = ""; for (; !enumItems.atEnd(); enumItems.moveNext()) { var objItem = enumItems.item(); output+="Name: " + objItem.Name + "\n"; } alert(output); } catch(e) { alert(e); } } </script>在上述示例中,我們通過GetObject()方法來連接WMI的CIMV2命名空間。WMI是Windows Management Instrumentation的縮寫, 是一種Windows的系統管理技術,它向管理員提供了一個標準的接口來訪問Windows系統信息、性能數據、事件日志等資源。 我們通過WMI查詢出所有打印機信息,然后將打印機名稱輸出到alert窗口中。 2. 讀取本地文件 我們可以通過ActiveX對象來訪問用戶電腦上的文件系統,下面是一個通過JavaScript實現讀取txt文件的例子:
<script language="JavaScript"> function readTextFile(file) { var fso, ts, s; try { fso = new ActiveXObject("Scripting.FileSystemObject"); ts = fso.OpenTextFile(file, 1); s = ts.readAll(); ts.Close(); } catch(e) { Alert("Unable to open file."); return; } alert(s); } </script>在該示例中,ActiveXObject是用于創建Scripting.FileSystemObject的工廠類。我們通過調用OpenTextFile方法來打開txt文件,并將返回結果存儲在s變量中。 3. 讀取注冊表 ActiveX控件還可以幫助JavaScript代碼訪問系統注冊表,下面是一個通過JavaScript實現讀取注冊表的例子:
<script language="JavaScript"> function readRegistryValue(key, value) { var wshell = new ActiveXObject("WScript.Shell"); var regval = ""; try { regval = wshell.RegRead(key + "\\" + value); } catch(e) { Alert("Unable to read registry."); return; } alert(regval); } </script>在該示例中,我們通過創建WScript.Shell對象來操作系統注冊表。我們可以通過調用RegRead的方法,查詢指定路徑下的注冊表值。 總結 JavaScript與ActiveX的交互提供了一個強大的手段來訪問用戶電腦的系統資源。但同時,由于ActiveX存在一些安全隱患,所以在實際應用中,我們需要小心使用這些技術,以避免被利用進行惡意操作。
上一篇php cji