VBAとVBScriptが類似しています。 WMIの場合とほとんど同じです。ここに3つのスクリプトがあります。 WMIをイベントハンドラでワイヤリングすることもできます。ここで示すように、複数のイベントを1つのイベントではなく複数持つことができます。
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を一斉に避けることですが、クライアントはそれを愛しています。したがって、私は「私はなぜこれを行うためにマクロを作っていませんでしたか?そして今、私はそれを持っています。 – CodeOwl