*--Courtesy of Roger at http://www.themssforum.com/ExchangeFox/File-exists/ * *--Hit Escape to cancel. - Monitors c:\temp ******************* * FolderWatcher.prg ******************* Local x, lcWQL, lcComputer, loSinkEvents, loEvent Local loSink Set Escape On On Key Label ESC Clear Events Clear lcComputer = "." *change the line below to your "watched" folder *and yes you need 4 backslashes! lcFolderToWatch = "c:\\\\temp" loWMI = Getobject("winmgmts:" ; + "{impersonationLevel=impersonate}!\\" + ; lcComputer + ; "\root\cimv2") lcWQL = "" * Change the "Within 2" to how often you want * to poll for new files (in seconds) Text to lcWQL Textmerge NoShow Pretext 7 Select * From __InstanceCreationEvent Within 2 Where TargetInstance ISA 'CIM_DirectoryContainsFile' And TargetInstance.GroupComponent = 'Win32_Directory.Name="<<lcFolderToWatch>>"' EndText loSinkEvents=Newobject("myEventHandler") loSink = Createobject("WbemScripting.SWbemSink","SINK_") Eventhandler(loSink,loSinkEvents) loWMI.ExecNotificationQueryAsync(loSink,lcWQL) READ EVENTS On Key Label ESC Define Class myEventHandler As Session Implements ISWbemSinkEvents In ; "C:\WINDOWS\SYSTEM32\WBEM\WBEMDISP.TLB" Procedure ISWbemSinkEvents_OnObjectReady(; objWbemObject As VARIANT,; objWbemAsyncContext As VARIANT); As VOID; HelpString "Event triggered when an Object is available" ? objWbemObject.TargetInstance.PartComponent Endproc Procedure ISWbemSinkEvents_OnCompleted(; iHResult As VARIANT,; objWbemErrorObject As VARIANT,; objWbemAsyncContext As VARIANT); As VOID; HelpString "Event triggered when an asynchronous operation is completed" * add user code here Endproc Procedure ISWbemSinkEvents_OnProgress(; iUpperBound As Number,; iCurrent As Number,; strMessage As String,; objWbemAsyncContext As VARIANT); As VOID; HelpString "Event triggered to report the progress of an asynchronous operation" * add user code here Endproc Procedure ISWbemSinkEvents_OnObjectPut(; objWbemObjectPath As VARIANT,; objWbemAsyncContext As VARIANT); As VOID; HelpString "Event triggered when an object path is available following a Put operation" * add user code here Endproc EndDefine * End prg