- 浏览: 382984 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (196)
- window编程 (18)
- FLEX (37)
- 数据库 (5)
- Java---Struts2 (8)
- Window相关知识 (4)
- 网站建设相关知识 (2)
- java基础知识 (6)
- C# (8)
- 虚拟化 (3)
- 服务器--sound server (1)
- 网络协议 (5)
- Linux (21)
- linux-命令 (3)
- Windows-2008R2 (1)
- VBScript,异常处理 (1)
- windows域 (1)
- 弦歌不辍 (1)
- 语言---c++ (16)
- MFS (1)
- grub (1)
- 技术介绍 (3)
- 百度之星 (5)
- Web服务 (1)
- 存储管理 (2)
- NoSQL (3)
- plymouth (1)
- 工具 (1)
- 云计算 (1)
- 嵌入式 (1)
- usbip (1)
最新评论
-
canghailan:
C++中能直接操作的最大位数64,每64位统计,最后相加,暂时 ...
判断一段内存是否全部为0 -
yiranwuqing:
canghailan 写道Hamming weight 算法应 ...
判断一段内存是否全部为0 -
canghailan:
Hamming weight 算法应该效率更高
判断一段内存是否全部为0 -
zoufangyingzi:
楼主都用了哪些jar包,压缩包中没有lib包///
Rest实例演示 -
zpz112358:
具体是什么意思啊?
flex blazed 配置多个remoting-config
以下示例演示如何使用WMI 获得本地机器的进程列表(当然,WMI 也能获得 远程机器的进程列表,远不只例子中的功能),示例代码是我简化codeproject 的例子而来:
// 用于表示进程信息的结构
public struct structProcessInfo
{
// 进程名
public string stringName;
// 进程ID
public string stringProcessID;
// 父进程ID
public string stringParentProcessID;
// 用户名
public string stringUserName;
}
public class ProcessesInfo
{
private structProcessInfo _value;
public structProcessInfo Value
{
get {return _value;}
set {_value = value ;}
}
}
// 用于保存进程信息的字典类,继承于NameObjectCollectionBase
public class ProcessesDictionary : NameObjectCollectionBase
{
public void Clear()
{
BaseClear();
}
public void Add(string name, ProcessesInfo processObj)
{
BaseAdd(name, processObj);
}
public void Remove(string name)
{
BaseRemove(name);
}
public void RemoveAt(int index)
{
BaseRemoveAt(index);
}
public ProcessesInfo this [int index]
{
get { return (ProcessesInfo )BaseGet(index); }
set { BaseSet(index, value ); }
}
public ProcessesInfo this [string name]
{
get { return (ProcessesInfo )BaseGet(name); }
set { BaseSet(name, value ); }
}
}
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// 用于表示进程CPU 及内存使用情况的结构
public struct structPerformance
{
public string stringPercentProcessorTime;
public string stringVirtualBytes;
}
public class ProcessPerf
{
private structPerformance _value;
public structPerformance Value
{
get { return _value; }
set { _value = value ; }
}
}
// 用于保存进程CPU 及内存使用情况的字典类
public class ProcessesPerformanceDictionary : NameObjectCollectionBase
{
public void Clear()
{
BaseClear();
}
public void Add(string name, ProcessPerf processPerformance)
{
BaseAdd(name, processPerformance);
}
public void Remove(string name)
{
BaseRemove(name);
}
public void RemoveAt(int index)
{
BaseRemoveAt(index);
}
public ProcessPerf this [int index]
{
get { return (ProcessPerf )BaseGet(index); }
set { BaseSet(index, value ); }
}
public ProcessPerf this [string name]
{
get { return (ProcessPerf )BaseGet(name); }
set { BaseSet(name, value ); }
}
}
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// 表示ManagementObject 对象的异步调用方法 是否完成
public class MyHandler
{
private bool isComplete = false ;
private ManagementBaseObject returnObject;
public void Done(object sender, ObjectReadyEventArgs e)
{
isComplete = true ;
returnObject = e.NewObject;
}
public bool IsComplete
{
get
{
return isComplete;
}
}
public ManagementBaseObject ReturnObject
{
get
{
return returnObject;
}
}
}
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
一个窗体,添加一个ListView :lvProcess ,一个Button :btList 用于显示进程列表,一个Button :btClose 用于关闭窗体:
private void btList_Click(object sender, EventArgs e)
{
this .lvProcess.Items.Clear();
ManagementOperationObserver observer = new ManagementOperationObserver ();
MyHandler invokeHandler = new MyHandler ();
observer.ObjectReady += new ObjectReadyEventHandler (invokeHandler.Done);
ProcessesDictionary pDict = new ProcessesDictionary ();
ProcessesPerformanceDictionary perDict = new ProcessesPerformanceDictionary ();
ProcessesInfo pInfo;
structProcessInfo pStruct;
ProcessPerf perInfo;
structPerformance perStruct;
string [] lvData = new string [5];
#region 获取进程名称、ID 、 父进程ID 、进程所属用户名
ManagementObjectCollection moc = this .ExecSearch("SELECT * FROM Win32_Process" );
if (moc == null )
{
MessageBox .Show("Error:null" );
return ;
}
foreach (ManagementObject mo in moc)
{
pInfo = new ProcessesInfo ();
pStruct = new structProcessInfo ();
pStruct.stringName = mo["Name" ].ToString();
pStruct.stringProcessID = mo["ProcessID" ].ToString();
pStruct.stringParentProcessID = mo["ParentProcessID" ].ToString();
mo.InvokeMethod(observer, "GetOwner" , null );
while (!invokeHandler.IsComplete)
{
System.Threading.Thread .Sleep(500);
}
// 判断获取用户名的操作是否成功
if (invokeHandler.ReturnObject["returnValue" ].ToString() == "0" )
{
pStruct.stringUserName = invokeHandler.ReturnObject.Properties["User" ].Value.ToString();
}
else
{
pStruct.stringUserName = "" ;
}
// 保存该进程信息到字典类中
pInfo.Value = pStruct;
pDict.Add(mo["ProcessID" ].ToString(), pInfo);
}
#endregion
#region 获得进程的CPU 及 内存使用情况
ManagementObjectCollection moc1 = this .ExecSearch("SELECT * FROM Win32_PerfFormattedData_PerfProc_Process" );
if (moc1 == null )
{
MessageBox .Show("Error:null" );
return ;
}
foreach (ManagementObject mo1 in moc1)
{
perInfo = new ProcessPerf ();
perStruct = new structPerformance ();
perStruct.stringPercentProcessorTime = mo1.Properties["PercentProcessorTime" ].Value.ToString();
perStruct.stringVirtualBytes = mo1["VirtualBytes" ].ToString();
// 添加CPU 及内存使用情况到字典类中
perInfo.Value = perStruct;
perDict.Add(mo1["IDProcess" ].ToString(), perInfo);
perInfo = null ;
}
#endregion
#region 显示列表
foreach (string stringProcessID in pDict)
{
pStruct = pDict[stringProcessID].Value;
lvData[0] = pStruct.stringName.ToString();
lvData[4] = pStruct.stringProcessID.ToString();
lvData[1] = pStruct.stringUserName.ToString();
try
{
lvData[2] = perDict[pStruct.stringProcessID.ToString()].Value.stringPercentProcessorTime.ToString();
lvData[3] = perDict[pStruct.stringProcessID.ToString()].Value.stringVirtualBytes.ToString();
}
catch (NullReferenceException )
{
// 无法获取CPU 及内存情况
lvData[2] = "0" ;
lvData[3] = "0" ;
}
ListViewItem lvItem = new ListViewItem (lvData, 0);
lvProcess.Items.Add(lvItem);
}
#endregion
pDict.Clear();
pDict = null ;
perDict.Clear();
perDict = null ;
}
/// <summary>
/// 执行查询
/// </summary>
/// <param name="command"> 查询语句 </param>
/// <returns></returns>
private ManagementObjectCollection ExecSearch(string command)
{
ManagementObjectCollection moc = null ;
ObjectQuery objQuery = new ObjectQuery (command);
string stringMachineName = "localhost" ;
ManagementScope scope = new ManagementScope ("\\\\" + stringMachineName + "\\root\\cimv2" );
ManagementObjectSearcher searcher = new ManagementObjectSearcher (scope, objQuery);
try
{
moc = searcher.Get();
}
catch (Exception x)
{
MessageBox .Show("Error:" + x.Message);
}
return moc;
}
private void btClose_Click(object sender, EventArgs e)
{
this .Close();
}
发表评论
-
修改网络映射磁盘的方法
2013-03-07 10:46 1384相信很多人都一直希望能够修改网络映射磁盘的La ... -
无法安装silverlight4 for vs 2010
2012-05-21 14:28 901我的操作系统 window XP 32 bit 中文 V ... -
一个封锁操作被对 WSACancelBlockingCall 的调用中断
2011-12-20 20:38 4032异常信息: System.Net.Sockets.Socke ... -
Windows开机自动启动程序
2011-12-14 18:51 2415自动启动程序在哪里? ... -
C# 操作注册表
2011-12-13 21:41 1065首先我们来熟悉一下C# ... -
CMD命令大全,C#调用CMD命令
2011-12-12 10:22 3006XP.CMD命令大全有关某个 ... -
C# WinForm 只运行一个程序实例
2011-09-14 22:08 2691方法一: using System; using ... -
Window 窗口层次关系
2011-03-01 00:23 1391http://www.360doc.com/content/1 ... -
C++ 的源码好网站
2011-01-05 21:04 1760C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清 ... -
XP实现多用户同玩一台电脑的方法
2010-12-27 01:23 950首先是在Windows XP上安装SP2正式版,按照常规方式安 ... -
由 WINDOWS 远程桌面导致的 DirectSound设置不可用
2010-12-27 01:01 1916在网络中,为了方便维护服务器,一般都会选择WINDOWS自带的 ... -
VB 捕获系统注销、关机事件
2010-07-06 15:14 1622正文开始: 目前网上,能够截获系统注销、关机事件消息的VB代 ... -
如何使用 WMI 管理远程计算机
2010-06-05 11:45 4620转自:http://hi.baidu.com/peter_sh ... -
钩子程序
2010-06-05 11:39 1408基本概念 钩子(Hook),是Windows消息处理机制 ... -
WMI简单介绍
2010-06-05 11:19 2190要成为WMI脚本高手当要 ... -
WMI可用的信息介绍
2010-06-05 11:19 1046Win32_Processor, // CPU 处理器 ... -
WMI可用的信息介绍
2010-06-05 11:19 1066Win32_Processor, // CPU 处理器 ...
相关推荐
一个使用WMI获取系统信息的实例,包括进程、服务和硬件信息,很有参考价值
详细演示了C++调用WMI遍历进程的整个过程,有详细注释,代码可以直接复用。
这个是下载别人的,使用WMI获取系统信息很方便
Visual C++源代码 84 如何使用WMI查询声音设备信息Visual C++源代码 84 如何使用WMI查询声音设备信息Visual C++源代码 84 如何使用WMI查询声音设备信息Visual C++源代码 84 如何使用WMI查询声音设备信息Visual C++源...
Python用WMI模块获取Windows系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息。 本文实例讲述了python使用wmi模块获取windows下的系统信息 监控系统 ...
WMI 获取计算机信息(cpu 硬盘 网卡 网速)C# 源码
Visual C++源代码 87 如何使用WMI查询处理器信息Visual C++源代码 87 如何使用WMI查询处理器信息Visual C++源代码 87 如何使用WMI查询处理器信息Visual C++源代码 87 如何使用WMI查询处理器信息Visual C++源代码 87 ...
使用j-Interop实现java连接wmi获取windows系统信息的例子 可以直接导入MyEclipse运行,能够获取CPU,主板,显卡,声卡,网卡,以及CPU使用率,内存使用率等
易语言WMI取硬件信息源码,WMI取硬件信息,处理CPU信息,处理补丁信息,处理进程信息,处理显卡信息,处理系统服务信息,处理显示器信息,处理内存信息,处理磁盘驱动器信息,处理主板信息,处理BIOS信息,处理服务装载顺序组...
利用WMI枚举进程,可支持32位程序在64下运行
主板信息: -------- 主板名称 主板序列号 CPU信息: -------- CPU品牌及型号 CPU序列号 CPU主频 CPU二级缓存 曲线图显示CPU使用率 硬盘信息: --------- 硬盘型号 硬盘序列号 光驱信息: --------- 光驱型号 ...
Visual C++源代码 86 如何使用WMI查询串行端口信息Visual C++源代码 86 如何使用WMI查询串行端口信息Visual C++源代码 86 如何使用WMI查询串行端口信息Visual C++源代码 86 如何使用WMI查询串行端口信息Visual C++源...
使用wmi查询处理器信息
这是一个Golang 获取wmi windows硬件信息的源代码,包括CPU,网卡,内存,硬盘等信息
近期公司要让写个远程监控进程的内存和cpu百分比,自己写了个程序,主要功能就是监控多台机器指定进程的cpu占比和内存消耗
通过C++实现用WMI获取操作系统补丁信息,脱离了以往获取此类信息对注册表的依赖。此代码是MFC中的DLL,同时采用了虚拟接口技术。
WMI获取远程服务器CPU,内存使用率函数源代码,主要解决Win32_LogicalMemoryConfiguration不能用的问题
VC利用WMI获取系统信息..包括BIOS,CPU,显卡,声卡,硬盘,内存的信息
CC++通过WMI和系统API函数获取获取系统硬件配置信息
此软件显示了所有WMI能够抓取出来的所有信息.