C#操作windows系统进程的方法

C#操作windows系统进程的方法

在C#中,我们可以使用Process类来控制和操作Windows系统的进程。

如何启动一个进程?

我们可以使用Process.Start()方法来启动一个新的进程。该方法有多个重载形式,其中最常用的形式是传递进程的可执行文件的完整路径或者文件名,可以带上其它参数,可见以下示例:

Process.Start("notepad.exe"); // 启动notepad
Process.Start("C:\\Windows\\System32\\calc.exe"); // 启动计算器
Process.Start("C:\\Program Files\\MyApp\\MyApp.exe", "--debug"); // 启动指定路径下的应用程序,带上参数

如何使用进程的信息?

我们可以使用Process实例的许多属性来获取进程的信息,例如:

  • Id - 进程PID
  • Name - 进程名称(不带文件扩展名)
  • MainWindowTitle - 进程主窗口的标题
  • StartTime - 进程创建时间
  • TotalProcessorTime - 进程的CPU使用时间
  • Threads - 进程的线程列表

可见以下示例:

Process notepad = Process.Start("notepad.exe");
Console.WriteLine($"进程ID:{notepad.Id}");
Console.WriteLine($"进程名称:{notepad.ProcessName}");
Console.WriteLine($"主窗口标题:{notepad.MainWindowTitle}");
Console.WriteLine($"开始时间:{notepad.StartTime}");
Console.WriteLine($"CPU使用时间:{notepad.TotalProcessorTime}");
Console.WriteLine($"线程数量:{notepad.Threads.Count}");

如何关闭或终止进程?

我们可以使用Process.Kill()方法来终止进程,也可以使用Process.CloseMainWindow()方法来关闭进程的主窗口(前提是该进程的主窗口可以响应WM_CLOSE消息),例如:

Process notepad = Process.Start("notepad.exe");
Thread.Sleep(1000); // 等待1秒,确保notepad已经启动
notepad.CloseMainWindow(); // 关闭notepad的主窗口
notepad.WaitForExit(); // 等待notepad进程退出
notepad.Dispose(); // 释放notepad占用的资源

示例

以下是一个完整的控制Windows进程的示例程序,首先启动Notepad进程,然后等待用户通过控制台输入关闭指令,并在接收到关闭指令后关闭Notepad进程:

using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        Process notepad = Process.Start("notepad.exe");
        Console.WriteLine($"启动进程:{notepad.Id} - {notepad.ProcessName}");

        Console.WriteLine("输入x关闭进程");
        while(Console.ReadLine() != "x") {}

        notepad.CloseMainWindow();
        notepad.WaitForExit();
        notepad.Dispose();

        Console.WriteLine($"进程已关闭");
    }
}

另一个示例程序是检测系统中所有运行的Web服务器进程,统计它们的CPU使用时间和内存使用情况,并输出到控制台:

using System;
using System.Diagnostics;
using System.Linq;

class Program
{
    static void Main()
    {
        foreach(Process p in Process.GetProcesses())
        {
            if(p.ProcessName == "w3wp" || p.ProcessName == "iisexpress")
            {
                Console.WriteLine($"{p.ProcessName} - CPU时间:{p.TotalProcessorTime},内存使用:{p.WorkingSet64/1024}KB");
            }
        }
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#操作windows系统进程的方法 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • C#自定义集合初始化器

    C#中的自定义集合初始化器是一种语法糖,它可以让我们更方便地初始化一个自定义集合。下面是一个使用自定义集合初始化器的例子: var list = new MyList<int> { 1, 2, 3 }; 在这个例子中,我们使用了自定义集合初始化器来初始化一个名为MyList的自定义集合,其中包含了3个整数值。 为了使用自定义集合初始化器,我们需要…

    C# 2023年6月7日
    00
  • C#中遍历各类数据集合的方法总结

    C#中遍历各类数据集合的方法总结 在C#中,有很多种不同的数据集合类型,包括列表(List)、数组(Array)、队列(Queue)、堆栈(Stack)、哈希表(Hashtable)、字典(Dictionary)等等。在实际编程过程中,我们需要遍历这些数据集合来处理数据。 本文将介绍C#中遍历各类数据集合的方法总结。 遍历列表(List) List<s…

    C# 2023年5月31日
    00
  • AspNet Core上实现web定时任务实例

    当我们需要在我们的Web应用中调度任务时,定时任务是一种非常重要的工具。在AspNet Core中,我们可以使用第三方库如Hangfire或Quartz等来实现定时任务。让我们更加详细地了解如何在AspNet Core中实现web定时任务。 第一步: 添加Hangfire参考 在AspNet Core Web应用中启用Hangfire定时任务,首先需要将Ha…

    C# 2023年6月3日
    00
  • C#中Quartz的使用

    安装 NuGet 包:在 Visual Studio 中打开项目,右键单击项目名称,选择“管理 NuGet 包”,搜索“Quartz”并安装。 创建作业:创建一个实现了 IJob 接口的类,该接口包含一个 Execute 方法,该方法将在作业运行时调用。例如: public class MyJob : IJob { public Task Execute(I…

    C# 2023年4月17日
    00
  • C#实现Stripe支付的方法实践

    C#实现Stripe支付的方法实践 本篇攻略将介绍如何使用C#实现Stripe支付。首先需要注册并获得Stripe API的key,接着进行以下几个步骤: 步骤一:添加Stripe API及其他依赖关系的NuGet软件包 打开Visual Studio,创建一个新项目。在项目中添加Stripe API及其他依赖关系的NuGet软件包,可通过NuGet管理器进…

    C# 2023年6月1日
    00
  • C# MVC模式下商品抽奖功能实现

    下面是“C# MVC模式下商品抽奖功能实现”的完整攻略: 1. 确定需求并进行规划 在进行开发之前,先要确定功能需求并进行详细的规划设计工作。在这个案例中,我们需要实现商品抽奖功能,具体的规划流程如下: 确定数据库表结构:商品表、用户表、中奖记录表; 实现商品列表页面,展示商品的图片和基本信息; 实现用户登录和注册功能,用户登录后才能参与抽奖; 实现抽奖页面…

    C# 2023年5月31日
    00
  • C#图片处理类分享

    C#图片处理类分享 在本文中,我们将分享一些如何使用C#图片处理类(Image class)的技巧和实用示例。这些技巧涵盖的范围包括图片压缩,大小和比例的更改,旋转和翻转图片等。 图片压缩 压缩图片可以减小图片的大小,从而减少图片在服务器上的存储空间和网络传输带宽占用。下面是一个简单的示例,演示如何使用C#的Image类来压缩图片: using System…

    C# 2023年5月31日
    00
  • asp.net(c#)复数类(复数加减乘除四则运算)

    ASP.NET (C#)复数类(复数加减乘除四则运算) 简介 复数是一个由实部和虚部组成的数,实部和虚部都是实数。在科学技术领域中,复数常用于描述具有大小和相位的量,例如电位。 在ASP.NET (C#)中,我们可以定义并使用自己的复数类,实现复数的四则运算,并进行加减乘除等操作。下面将详细介绍如何编写一个复数类。 定义复数类 为了定义一个复数类,我们需要考…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部