进程监控程序 监视进程的创建

 1  Option   Explicit  
 2  ' 引用Microsoft WMI Scripting V1.2 Library 
 3  Private  objSWbemServices  As  SWbemServices 
 4  Private  WithEvents CreateProcessEvent  As  SWbemSink 
 5  Private  WithEvents DeleteProcessEvent  As  SWbemSink 
 6  Private  WithEvents ModificationProcessEvent  As  SWbemSink 
 7 
 8 
 9  Private   Sub  cmdStartCreate_Click() 
10  StartMonitorCreateProcessEvent 
11  End Sub  
12 
13  Private   Sub  cmdStartDelete_Click() 
14  StartMonitorDeleteProcessEvent 
15  End Sub  
16 
17  Private   Sub  cmdStartModification_Click() 
18  StartMonitorModificationProcessEvent 
19  End Sub  
20 
21  Private   Sub  cmdStopCreate_Click() 
22  CreateProcessEvent.Cancel 
23  End Sub  
24 
25  Private   Sub  cmdStopDelete_Click() 
26  DeleteProcessEvent.Cancel 
27  End Sub  
28 
29  Private   Sub  cmdStopModification_Click() 
30  ModificationProcessEvent.Cancel 
31  End Sub  
32 
33  Private   Sub  Form_Load() 
34  StartMonitorCreateProcessEvent 
35  StartMonitorDeleteProcessEvent 
36  StartMonitorModificationProcessEvent 
37  End Sub  
38 
39  Private   Sub  Form_Unload(Cancel  As   Integer
40  CreateProcessEvent.Cancel 
41  DeleteProcessEvent.Cancel 
42  ModificationProcessEvent.Cancel 
43  End Sub  
44 
45  ' 进程创建事件 
46  Private   Sub  CreateProcessEvent_OnObjectReady(ByVal objWbemObject  As  WbemScripting.ISWbemObject, ByVal objWbemAsyncContext  As  WbemScripting.ISWbemNamedValueSet) 
47  Dim  ProcessName  As   String , ProcessId  As   Long  
48  ProcessName  =  objWbemObject.Properties_.Item( " TargetInstance " ).Value.Properties_.Item( " Name " ).Value 
49  ProcessId  =  objWbemObject.Properties_.Item( " TargetInstance " ).Value.Properties_.Item( " ProcessId " ).Value 
50  Debug.Print objWbemObject.Properties_.Item( " TargetInstance " ).Value.Properties_.Item( " CommandLine " ).Value 
51  Debug.Print objWbemObject.Properties_.Item( " TargetInstance " ).Value.Properties_.Item( " CreationDate " ).Value 
52  Debug.Print objWbemObject.Properties_.Item( " TargetInstance " ).Value.Properties_.Item( " ExecutablePath " ).Value 
53  Debug.Print objWbemObject.Properties_.Item( " TargetInstance " ).Value.Properties_.Item( " Handle " ).Value 
54  Debug.Print objWbemObject.Properties_.Item( " TargetInstance " ).Value.Properties_.Item( " CreationDate " ).Value 
55  Debug.Print objWbemObject.Properties_.Item( " TargetInstance " ).Value.Properties_.Item( " ProcessId " ).Value 
56 
57  If  ProcessName  =   " notepad.exe "   Then  
58  Debug.Print  " 记事记已运行 "  
59  Shell  " ntsd -c q -p  "   &  ProcessId, vbNormalNoFocus 
60  ' Shell "ntsd -c q -pn notepad.exe", vbNormalNoFocus 
61  End   If  
62 
63  If  ProcessName  =   " QQ.exe "   Then     ' 关QQ
64  Shell  " ntsd -c q -p  "   &  ProcessId, vbNormalNoFocus 
65  End   If  
66  End Sub  
67 
68  ' 进程退出事件 
69  Private   Sub  DeleteProcessEvent_OnObjectReady(ByVal objWbemObject  As  WbemScripting.ISWbemObject, ByVal objWbemAsyncContext  As  WbemScripting.ISWbemNamedValueSet) 
70 
71  End Sub  
72 
73  ' 进程属性变更事件 
74  Private   Sub  ModificationProcessEvent_OnObjectReady(ByVal objWbemObject  As  WbemScripting.ISWbemObject, ByVal objWbemAsyncContext  As  WbemScripting.ISWbemNamedValueSet) 
75  ' MsgBox objWbemObject.Properties_.Item("TargetInstance").Value.Properties_.Item("Name").Value 
76  End Sub  
77 
78    
79  Private   Sub  StartMonitorCreateProcessEvent() 
80  Set  CreateProcessEvent  =   New  SWbemSink 
81  Set  objSWbemServices  =   GetObject ( " winmgmts:\\.\root\cimv2 "
82  objSWbemServices.ExecNotificationQueryAsync CreateProcessEvent,  " SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' "  
83  End Sub  
84 
85  Private   Sub  StartMonitorDeleteProcessEvent() 
86  Set  DeleteProcessEvent  =   New  SWbemSink 
87  Set  objSWbemServices  =   GetObject ( " winmgmts:\\.\root\cimv2 "
88  objSWbemServices.ExecNotificationQueryAsync DeleteProcessEvent,  " SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' "  
89  End Sub  
90 
91  Private   Sub  StartMonitorModificationProcessEvent() 
92  Set  ModificationProcessEvent  =   New  SWbemSink 
93  Set  objSWbemServices  =   GetObject ( " winmgmts:\\.\root\cimv2 "
94  objSWbemServices.ExecNotificationQueryAsync ModificationProcessEvent,  " SELECT * FROM __InstanceModificationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' "  
95  End Sub  
96 
97 

 

转载于:https://www.cnblogs.com/xxaxx/archive/2009/12/29/1635316.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值