zoukankan      html  css  js  c++  java
  • 主机性能监控之wmi 获取进程信息

    标 题: 主机性能监控之wmi 获取进程信息
    作 者: itdef
    链 接: http://www.cnblogs.com/itdef/p/3990499.html 

    欢迎转帖 请保持文本完整并注明出处

    仅在《主机性能监控之wmi 获取系统信息及内存性能信息》 代码中添加一个函数

    使用的结构体位为Win32_Process

    class Win32_Process : CIM_Process
    {
      string Caption;
      string CommandLine;
      string CreationClassName;
      datetime CreationDate;
      string CSCreationClassName;
      string CSName;
      string Description;
      string ExecutablePath;
      uint16 ExecutionState;
      string Handle;
      uint32 HandleCount;
      datetime InstallDate;
      uint64 KernelModeTime;
      uint32 MaximumWorkingSetSize;
      uint32 MinimumWorkingSetSize;
      string Name;
      string OSCreationClassName;
      string OSName;
      uint64 OtherOperationCount;
      uint64 OtherTransferCount;
      uint32 PageFaults;
      uint32 PageFileUsage;
      uint32 ParentProcessId;
      uint32 PeakPageFileUsage;
      uint64 PeakVirtualSize;
      uint32 PeakWorkingSetSize;
      uint32 Priority;
      uint64 PrivatePageCount;
      uint32 ProcessId;
      uint32 QuotaNonPagedPoolUsage;
      uint32 QuotaPagedPoolUsage;
      uint32 QuotaPeakNonPagedPoolUsage;
      uint32 QuotaPeakPagedPoolUsage;
      uint64 ReadOperationCount;
      uint64 ReadTransferCount;
      uint32 SessionId;
      string Status;
      datetime TerminationDate;
      uint32 ThreadCount;
      uint64 UserModeTime;
      uint64 VirtualSize;
      string WindowsVersion;
      uint64 WorkingSetSize;
      uint64 WriteOperationCount;
      uint64 WriteTransferCount;
    };
    View Code

    添加函数为

     1 bool CMyWMI::QueryProcessInfo()
     2 {
     3     HRESULT hres; //定义COM调用的返回  
     4     IEnumWbemClassObject* pEnumerator = NULL;  
     5     bool bRet = false;
     6 
     7     try{
     8         hres = pSvc_->ExecQuery(  
     9             bstr_t("WQL"),     
    10             bstr_t("SELECT * FROM Win32_Process"),  
    11             WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,   
    12             NULL,  
    13             &pEnumerator);  
    14 
    15         if (FAILED(hres))  
    16         {  
    17             throw exception("ExecQuery() error.");
    18         }  
    19 
    20         while (pEnumerator)  
    21         {
    22             IWbemClassObject *pclsObj;  
    23             ULONG uReturn = 0;  
    24 
    25             HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,   
    26                 &pclsObj, &uReturn);  
    27             if(0 == uReturn)  
    28             {  
    29                 break;  
    30             }  
    31 
    32             GetInfo(L"Caption",pclsObj);
    33             GetInfo(L"Handle",pclsObj);
    34             GetInfo(L"ExecutablePath",pclsObj);
    35             cout << endl;
    36 
    37             pclsObj->Release(); 
    38         }
    39 
    40 
    41     }catch(exception& e)
    42     {
    43         cout << e.what() << endl;
    44         if(pEnumerator != NULL)
    45         {
    46             pEnumerator->Release(); 
    47             pEnumerator = NULL;
    48         }
    49         return bRet;
    50     }
    51 
    52 
    53     if(pEnumerator != NULL)
    54     {
    55         pEnumerator->Release(); 
    56         pEnumerator = NULL;
    57     }
    58 
    59     bRet = true;
    60     return bRet;
    61 }
    View Code

    python代码

    #!/usr/bin/env python 
    # -*- coding: cp936 -*-
     
    import wmi 
    import os 
    import sys 
    import platform 
    import time
    
    def process_info():
        c = wmi.WMI()
        for p in c.Win32_Process():
            print p.ProcessId, p.Name , p.ExecutablePath
     
    
    def main(): 
       process_info();
     
    if __name__ == '__main__': 
        main() 
    View Code

    效果:

    Type "copyright", "credits" or "license()" for more information.
    >>> ================================ RESTART ================================
    >>>
    0 System Idle Process None
    4 System None
    316 smss.exe None
    448 csrss.exe None
    520 wininit.exe None
    548 csrss.exe None
    596 services.exe None
    604 lsass.exe None
    612 lsm.exe None
    640 winlogon.exe None
    760 svchost.exe None
    820 BaiduHips.exe None
    852 BaiduSdSvc.exe None
    932 BaiduAnSvc.exe None
    1004 svchost.exe None
    352 atiesrxx.exe None
    1068 svchost.exe None
    1232 svchost.exe None
    1260 svchost.exe None







  • 相关阅读:
    单例模式——C++实现
    单例模式——java实现
    组合模式——java实现
    桥接模式——Java实现
    桥接模式——C++实现
    适配器模式——java实现
    编写一个显示当前时间的jsp页面
    适配器模式——C++实现
    安装配置hadoop1
    Nginx使用教程
  • 原文地址:https://www.cnblogs.com/itdef/p/3990499.html
Copyright © 2011-2022 走看看