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







  • 相关阅读:
    Linux 之 Memcached
    Linux 之 MySQL主从同步
    Linux 之 rsync实现服务器的文件同步
    A.01.03-模块的输入—模拟量输入
    A.01.02—模块的输入—高端输入
    A.01.01—模块的输入—低端输入
    复位电路
    边沿触发和电平触发的区别
    深入理解傅里叶变换
    电压跟随器
  • 原文地址:https://www.cnblogs.com/itdef/p/3990499.html
Copyright © 2011-2022 走看看