VBA和VBScript是相似的。對於WMI幾乎相同。這裏有三個腳本。您還可以將WMI與事件處理程序連接起來,以便您可以擁有多個事件,而不是一個事件,如此處所示。
VB6是可以編譯成exe的VBA。 VB6像Office一樣承載VBA語言。
InstanceCreationEvent
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""c:\\\\scripts""'")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo objLatestEvent.TargetInstance.PartComponent
Loop
InstanceModificationEvent
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""c:\\\\scripts""'")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo objLatestEvent.TargetInstance.PartComponent
Loop
InstanceDeletionEvent
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceDeletionEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""c:\\\\scripts""'")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo objLatestEvent.TargetInstance.PartComponent
Loop
*是* Excel是窮人的編程環境以外的東西嗎? –
您明白VBA代表* Visual Basic for Applications *,並且它只能在屬於MS Office的應用程序之一的範圍內工作?因此,代碼**必須在其中一個應用程序中運行**。並且該VBA不能在Excel電子表格或Word文檔之外運行,或<在此處插入所有其他Office應用程序>?那因此你不能將它用於獨立程序? VBA是* Office應用程序*的窮人編程語言。 –
是的,我明白了。我的直覺是避免將VBA集中在一起,但是客戶喜歡它,因此當他們問我「爲什麼你不用Excel製作一個宏來做這件事?」時,我需要一個堅實的答案。現在我擁有了。 – CodeOwl