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







  • 相关阅读:
    关于网络字节序(network byte order)和主机字节序(host byte order)
    关于垃圾回收,我来解释下为什么LocalConnection可以实现垃圾回收
    解决Form中ExternalInterface的Bug问题
    AS3里var aa:String是null还是""?
    IE并发连接限制(as)
    tar
    mysql默认端口号3306
    flex经验
    这个游戏不错
    nginx介绍
  • 原文地址:https://www.cnblogs.com/itdef/p/3990499.html
Copyright © 2011-2022 走看看