搬家第59天-citect2018CITECTVBA获取IO服务器、报警服务器、趋势服务器、报表服务器的进程ID

接着前面的练习做。前面的联系可以看出,citect32.exe这个进程下面有好几个线程,它们的ID不一样,但是进程名字一致。可以通过编程进一步区分每一个ID对应什么线程。
新建一个CitectVBA过程
Sub Get_Citect_RuntimeManager_ProdessID()
'获取citect进程的几个服务器线程ID
Dim strComputer
Dim objWMIServices As Object
Dim colSWbemObjectSet As Object
Dim SWbemObject As Object
Dim IOServerID,ReportServerID,TrendServerID,AlarmServerID
strComputer="."
Set objWMIServices=GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colSWbemObjectSet=objWMIServices.InstancesOf("Win32_Process")
main_AN6.clear
For Each SWbemObject In colSWbemObjectSet
 If SWbemObject.Description="citect32.exe" Then
  If Instr(SWbemObject.commandline,"IOServer1")<>0 Then'IOServer1是项目的IO服务器名字
   IOServerID=SWbemObject.processid
  End If
  If Instr(SWbemObject.commandline,"ReportServer1")<>0 Then'ReportServer1是项目的报表服务器名字
   ReportServerID=SWbemObject.processid
  End If
  If Instr(SWbemObject.commandline,"TrendServer1")<>0 Then 'TrendServer1是项目的趋势服务器名字
   TrendServerID=SWbemObject.processid
  End If
  If Instr(SWbemObject.commandline,"AlarmServer1")<>0 Then 'AlarmServer1是项目的报警服务器名字
   AlarmServerID=SWbemObject.processid
  End If
 End If
Next
Set colSWbemObjectSet=Nothing
Set objWMIServices=Nothing
msgbox "IO服务器的线程ID是:" & IOServerID
msgbox "报警服务器的线程ID是:" & AlarmServerID
msgbox "趋势服务器的线程ID是:" & TrendServerID
msgbox "报表服务器的线程ID是:" & ReportServerID

End Sub
画面上增加一个按钮,按钮的鼠标点击事件调用上面的citectvba过程,保存编译运行,点击按钮,就会逐个弹出消息框,显示citect运行管理器中几个线程的ID,和运行管理器窗口对比,完全一致。
posted @ 2021-03-27 15:48  来自金沙江的小鱼  阅读(318)  评论(0编辑  收藏  举报