SavageGarden 发表于 2013-2-7 19:21:00

VBS中使用WMI事件处理监控系统进程

OA项目中遇到这样一个问题:用户起草一种类型的公文,编辑word正文时希望能够将公文中的一些内容自动带到正文中,这个无非就是从服务器上把公文所对应的word正文文件下载到本地,替换掉里面指定内容的事,问题的关键在于替换掉内容后,或者用户填写了内容后,关闭word文件,如何监听此事件以在word程序退出后将此文件上传到服务器,不然,用户岂不是只是在本地做了修改,毫无用处。google了很久,终于解决了此问题,过程如下:
<html><body C://Temp/" + 34567 + ".doc");replacefile();wordlistener();"></body></html><script language="javascript">//根据公文ID下载文件function download(objID){doDownload(objID);}function upload(filepath){doUpload(filepath);}</script><script language="vbscript">'定义变量 开始'定义操作word文件的相关变量Dim myDocAppDim myDocDim objSelectionDim wordfilepath'定义变量 结束'初始化 开始'设置操作word文件的相关变量function init(filepath)Set myDocApp = CreateObject("Word.Application")myDocApp.Visible = TruemyDocApp.ActivatemyDocApp.Application.ScreenUpdating = Falseset myDoc = myDocApp.Documents.Open(filepath)Set objSelection = myDocApp.SelectionSet wordfilepath = filepathend function'初始化 结束'替换文件使用VBS 开始'对下载到本地的公文模板进行内容替换function replacefile()replace "#departname#","办公室"replace "#username#","张三"replace "#createDate#","2009-12-17"end function'替换文件使用VBS 结束'替换函数 开始function replace(text,replacetext)    With objSelection.Find      .Text = text      .Replacement.Text = replacetext      .Forward = True      .Wrap = 1      .Execute ,,,,,,,,,,2    End Withend function'替换函数 结束   '监听系统进程的函数 开始function wordlistener()strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set objEventSource = objWMIService.ExecNotificationQuery _    ("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_Process'")Do While True    Set objEventObject = objEventSource.NextEvent()    If Ucase(Left(objEventObject.TargetInstance.Name, 7)) = "WINWORD" Then    Select Case objEventObject.Path_.Class      '如果是打开      'Case "__InstanceCreationEvent"      '在这里添加事件处理代码      '如果是关闭      Case "__InstanceDeletionEvent"            '在这里添加事件处理代码 上传文件            upload wordfilepath            Exit Do    End Select    End IfLoopend function'监听系统进程的函数 结束 </script>
页: [1]
查看完整版本: VBS中使用WMI事件处理监控系统进程