监控系统进程监测到别的应用程序是否启动或关闭Process [] process = Process.GetProcessesByName( "你的程序在任务管理器中的名称" );
if(process.Length>1)
{
MessageBox.Show("已启动了一个此程序");
Application.ExitThread();
}
if(process.Length>1)
{
MessageBox.Show("已启动了一个此程序");
Application.ExitThread();
}
解决方案 »
- C#为何读不出ini文件的值?
- 请教编程高手,关于窗体间传值的问题
- DataSet dsdel = DS.GetChanges(DataRowState.Deleted); 怎样取到dsdel 中删除行的值,请各位大虾指教。。。
- 有关csc编译后的exe问题
- 未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。其他信息: ExecuteReader 需要打开的并且可用的连
- 求助一个设计经验的问题
- 私有构造的例子在说明什么问题
- 关于在.NET中使用COM+ (急)
- 在线等待
- .net做的项目能否部署在unix下?
- .NET 自动内存管理机制深入剖析 (C#分析篇)
- Web应用中,写一个link,然后让用户点击这个link下载服务端的文件,link内容怎么写
监测一个程序是否已经运行如何在C# 中使用WMI 实现远程查询和共享WMI 对大多数开发人员来说是一个感觉比较迷惑的东西,对我来说也是如此。直到最近看了一篇关于 .Net Management 的介绍后,才对WMI 有了一点点了解。下面就把自己的一点经验写给爱好C# 的朋友们。WMI 是一个非常强大的工具,它可以提供给我们非常强大的功能。比如在我们开发应用程序时经常需要得到本地或远程操作系统的信息。虽然看起来很平常,但是实际操作起来还是比较麻烦的,尤其当我们想要获得远程操作系统的信息时。WMI 要求开发者使用WQL 方式来访问对方。WQL 允许我们像使用SQL-LINK查询语言一样使用它。只要你知道这些类和它的字段变量,你可以很容易的得到你想要的信息。使用 WMI,使用者可以用查询精确地定义数据流。通过仅指定那些感兴趣的属性(在 SELECT 语句中)和仅检索感兴趣的实体(使用 WHERE 子句)这两项措施,查询限制了返回的数据量。例如,如果用户要检索计算机上所有小于 2 MB 的驱动器(驱动器 C、D 等):SELECT * FROM Win32_LogicalDisk WHERE FreeSpace < 2000000正如你看到的那样,使用一个简单的WMI 查询是相当容易的。为了实现这个结果,你需要在.NET 中引用System.Management 命名空间。只要你懂得一点数据库知识,我们就可以利用它操作所有我们的查询。System.Management 命名空间是 .NET 框架中的 WMI 命名空间。此命名空间包括下列类对象: ManagementObject 或 ManagementClass:分别为单个管理对象或类。 ManagementObjectSearcher:用于根据指定的查询或枚举检索 ManagementObject 或 ManagementClass 对象的集合。 ManagementEventWatcher:用于预订来自 WMI 的事件通知。 ManagementQuery:用作所有查询类的基础。下列代码向您展示了如何使用 WMI 列举远程机器上所有开启的进程。private void RemoteEnumerate_Click(object sender, System.EventArgs e){// ServerName 是对方机器的名字,也可以是 IP 地址,\\root\\cimv2 照抄就行
ManagementPath p = new ManagementPath("\\\\ServerName\\root\\cimv2");
ManagementScope ms = new ManagementScope(p);
ObjectQuery oq = new ObjectQuery("SELECT * FROM Win32_Process");
ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms,oq);
ManagementObjectCollection queryCollection1 = query1.Get();
foreach (ManagementObject service in queryCollection1){
listBox1.Items.Add("Service: " + service["Name"] + " FilePath: " + service["ExecutablePath"]);
}
使用 Process 组件以便:
读取本地/远程计算机上运行的进程。
启动本地计算机上的进程。
停止本地/远程计算机上的进程。
读取一些正在运行的进程使用的模块。
读取一些正在运行的进程的所有特征。
使用 ServiceController 组件:
读取本地/远程计算机上正在运行的服务和设备驱动程序。
启动/停止/暂停本地/远程计算机上的服务。
检查本地/远程计算机上服务或设备驱动程序的属性。
处理与使用 Process 和 ServiceController 组件相关的安全问题。
注意 该示例只能在 Windows NT 或 Windows 2000 操作系统上运行,这是因为 ServiceController 组件只能得到 Windows NT 平台的支持。
why?
谢谢!
http://www.aspxcn.com
或http://www.chinabs.com
这两个网站上的其中一个好像有你问的问题的源程序。自己找一下。
e是光盘。