- 浏览: 391807 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (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 1460相信很多人都一直希望能够修改网络映射磁盘的La ... -
无法安装silverlight4 for vs 2010
2012-05-21 14:28 955我的操作系统 window XP 32 bit 中文 V ... -
一个封锁操作被对 WSACancelBlockingCall 的调用中断
2011-12-20 20:38 4217异常信息: System.Net.Sockets.Socke ... -
Windows开机自动启动程序
2011-12-14 18:51 2466自动启动程序在哪里? ... -
C# 操作注册表
2011-12-13 21:41 1094首先我们来熟悉一下C# ... -
CMD命令大全,C#调用CMD命令
2011-12-12 10:22 3045XP.CMD命令大全有关某个 ... -
C# WinForm 只运行一个程序实例
2011-09-14 22:08 2732方法一: using System; using ... -
Window 窗口层次关系
2011-03-01 00:23 1421http://www.360doc.com/content/1 ... -
C++ 的源码好网站
2011-01-05 21:04 1794C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清 ... -
XP实现多用户同玩一台电脑的方法
2010-12-27 01:23 990首先是在Windows XP上安装SP2正式版,按照常规方式安 ... -
由 WINDOWS 远程桌面导致的 DirectSound设置不可用
2010-12-27 01:01 1979在网络中,为了方便维护服务器,一般都会选择WINDOWS自带的 ... -
VB 捕获系统注销、关机事件
2010-07-06 15:14 1695正文开始: 目前网上,能够截获系统注销、关机事件消息的VB代 ... -
如何使用 WMI 管理远程计算机
2010-06-05 11:45 4701转自:http://hi.baidu.com/peter_sh ... -
钩子程序
2010-06-05 11:39 1449基本概念 钩子(Hook),是Windows消息处理机制 ... -
WMI简单介绍
2010-06-05 11:19 2231要成为WMI脚本高手当要 ... -
WMI可用的信息介绍
2010-06-05 11:19 1079Win32_Processor, // CPU 处理器 ... -
WMI可用的信息介绍
2010-06-05 11:19 1104Win32_Processor, // CPU 处理器 ...
相关推荐
此外,你可能还需要处理查询结果的错误,以及考虑性能优化,比如使用异步查询和批处理。 这个压缩包中的“WmiTest”文件可能是包含完整代码和注释的示例项目,你可以直接编译运行,了解和学习如何在C++中通过WMI...
6. **异步操作**:在C#中使用Asynchronous Operations处理WMI查询,以避免阻塞主线程。 7. **错误处理和权限**:理解WMI操作可能遇到的错误类型,并学会处理权限问题,例如提升应用程序的管理员权限。 8. **性能...
文档中提供了使用C++开发WMI应用程序的多个示例,如调用提供者方法、异步获取本机和远程计算机的WMI数据、接收事件通知和创建WMI应用程序的示例代码。 ### 连接到WMI使用VBScript 还介绍了如何使用VBScript连接到...
如果处理WMI请求可能耗时,可以使用异步模式。pywmi库支持回调函数和协程两种异步方式。 3. **权限和安全** 在处理远程WMI连接时,需要注意权限设置和身份验证,确保安全连接。 **四、实际应用场景** 1. **...
在这个项目中,开发者可能使用了Node.js的异步I/O特性来与WMI服务进行交互,同时利用Promise或async/await语法来处理非阻塞操作。通过调用WMI接口,他们可能实现了如监控系统资源、收集性能数据、执行系统管理任务等...
5. **错误处理和异步操作**:说明如何在VB中处理WMI操作可能出现的错误,并介绍如何使用异步调用来提高性能。 6. **实际案例分析**:可能提供了几个实用的例子,如监控CPU使用率、管理网络连接、控制服务状态等,...
例如,你可以获取所有运行中的进程信息,或者修改系统设置。 4. **低级访问**:对于需要更底层控制的用户,`pywmi`也提供了直接访问WMI COM接口的能力,以便于进行复杂或特定的WMI操作。 5. **跨平台兼容性**:...
此外,类库可能还提供了异步事件处理机制,使你能够监听系统事件,如新进程的创建或服务的状态变化。 在 Delphi 中,使用 WMI 类库的步骤大致如下: 1. 创建 `TWMIClient` 实例并连接到 WMI 服务器(通常是本地...
7. **Windows API**:在Windows环境下,可以使用`WMI`(Windows Management Instrumentation)来获取远程计算机的详细信息。WMI提供了一整套的类库和接口,可以通过C++的COM编程来访问。 8. **代码实现**:`...
例如,`OpenProcess` API用于获取进程句柄,`TerminateProcess` API则可以结束指定的进程。 3. **SystemInfo 类**: 这个类是项目的核心,它封装了一系列方法来获取系统信息。以下是部分关键方法的实现: - **CPU...
WMI提供了丰富的类库,如`Win32_Process`和`Win32_PerfFormattedData_PerfProc_Process`,可以获取进程的详细信息。通过`CreateObject`函数创建WMI连接,然后执行查询,即可获得进程的CPU使用率、内存使用量等。 3....
- **Win32 API**:Windows操作系统提供的底层接口,如`OpenProcess`用于获取进程句柄,`GetProcessMemoryInfo`获取进程内存信息。 - **使用P/Invoke调用Win32 API**:C#中通过DllImport特性导入这些API,然后在C#...
例如,System.Management命名空间下的ManagementObject类可以用来获取硬件信息,而System.Diagnostics.Process类则可以用于监视进程和内存使用情况。 源码分析是学习和理解.NET编程的重要途径,通过阅读...
例如,可以使用`GetSystemTimes`或`GetProcessTimes` API函数来获取系统或特定进程的时间信息,进而计算CPU使用率。 2. **系统信息获取**:通过`Win32_PerfFormattedData_PerfOS_Processor` WMI类,VB可以访问到...
通过WMI,开发者可以获取系统信息,执行操作系统级别的任务,如管理系统服务、进程、设备驱动、用户账户等。在C#中,我们可以通过System.Management命名空间中的类来访问和利用WMI的功能。 在远程控制程序中,关键...
使用`System.Diagnostics.Process`类可以获取和管理进程信息。以下代码展示了如何获取所有运行的进程并显示其名称: ```csharp Process[] processes = Process.GetProcesses(); foreach (Process process in ...
例如,你可以通过WMI(Windows Management Instrumentation)接口来获取系统的电源信息,甚至设置电源策略,如休眠、睡眠或关闭。 1. **WMI(Windows Management Instrumentation)**:它是Windows操作系统提供的一...
1. **服务器信息获取**:通过调用.NET Framework提供的API或者使用Windows Management Instrumentation (WMI)技术,收集服务器的硬件信息(如CPU、内存、磁盘等)、操作系统信息、网络状态、进程和线程信息等。...
7. **进程与文件系统控制**:通过System.Diagnostics.Process类,可以远程启动、停止、管理和获取进程信息。同时,System.IO命名空间提供了对文件和目录的操作,如读写文件、创建目录等。 8. **用户界面**:虽然...
在VC++中,可以使用`AdjustTokenPrivileges`函数提升进程权限,但这也增加了潜在的安全风险,因此需谨慎处理。 通过理解以上知识点,并结合VC++的编程技巧,可以编写出能够安全、高效地修改DNS服务器地址的程序。在...