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







  • 相关阅读:
    现在的代码,贴一下
    2014年七月写过的代码,现在看来,还有待改进呀
    第一次做技术论坛发博文,不知道说点啥
    04-树6. Huffman Codes--优先队列(堆)在哈夫曼树与哈夫曼编码上的应用
    04-树5. File Transfer--并查集
    04-树4. Root of AVL Tree-平衡查找树AVL树的实现
    03-树3. Tree Traversals Again (25)将先序遍历和中序遍历转为后序遍历
    03-树2. List Leaves (25) 二叉树的层序遍历
    二叉树的遍历:先序中序后序遍历的递归与非递归实现及层序遍历
    最大子序列和问题之算法优化
  • 原文地址:https://www.cnblogs.com/itdef/p/3990499.html
Copyright © 2011-2022 走看看