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日

相关文章

  • javascript 节点排序实现代码

    下面是关于“javascript 节点排序实现代码”的完整攻略。 一、准备要排序的节点 首先,需要获取需要排序的节点,并将它们存入到一个数组中,以便进行排序操作。可以通过以下方式获取需要排序的节点: const nodes = document.querySelectorAll(‘.node’); // 获取所有需要排序的节点 二、将节点进行排序操作 在获取…

    C# 2023年6月8日
    00
  • .Net执行SQL存储过程之易用轻量工具详解

    以下是关于“.Net执行SQL存储过程之易用轻量工具详解”的完整攻略: 1. 什么是易用轻量工具? 易用轻量工具是一个 .NET 库,用于执行 SQL 存储过程。它提供了一种简单、易用的方式来执行存储过程,而无需编写大量的代码。易用轻量工具支持多种数据库,包括 SQL Server、MySQL、Oracle。 2. 如何使用易用轻量工具? 要使用易用轻量工具…

    C# 2023年5月12日
    00
  • C#基础语法:方法参数详解

    C#基础语法:方法参数详解 在 C# 中,方法的参数是指方法接收的数据类型和变量,它是方法的重要组成部分。方法参数允许我们向方法传递值,并在方法中使用这些值。本文将详细讲解 C# 中的方法参数及其使用方法。 方法参数的基本概念 示例方法定义如下所示: public int Add(int num1, int num2) { return num1 + num…

    C# 2023年5月15日
    00
  • ASP.NET如何定时调用WebService服务

    ASP.NET 定时调用 WebService 有多种实现方式,其中比较常用的有使用定时器 Timer 和使用 Quartz.NET 两种。下面分别给出两种方式的示例说明。 使用定时器 Timer 实现定时调用 WebService 使用 System.Windows.Forms.Timer 实现,在 WebForm 或 Windows 窗口应用程序中可以轻…

    C# 2023年6月3日
    00
  • ASP.NET Core使用EF创建模型(必需和可选属性、最大长度、并发标记、阴影属性)

    在 ASP.NET Core 中,可以使用 Entity Framework (EF) 来创建模型。EF 是一个 ORM 框架,可以将数据库中的表映射到 C# 类中。以下是 ASP.NET Core 中使用 EF 创建模型的完整攻略: 步骤一:安装 EF 在使用 EF 前,需要在 ASP.NET Core 项目中安装 EF。可以使用 NuGet 包管理器或者…

    C# 2023年5月17日
    00
  • asp.net(c#) 使用Rex正则来生成字符串数组的代码

    ASP.NET是一个基于微软.NET框架的Web应用程序框架,支持多种编程语言,如C#、VB等。使用ASP.NET开发Web应用程序可以让开发者更加高效、便捷地创建功能强大的Web应用程序。 Rex正则是.NET框架提供的正则表达式库,可以帮助开发者更加方便地处理和匹配字符串。本文将针对ASP.NET中使用Rex正则来生成字符串数组的问题进行详细讲解。 步骤…

    C# 2023年5月31日
    00
  • C# 使用Log4net添加日志记录的方法

    下面是“C# 使用Log4net添加日志记录的方法”的完整攻略,包含以下内容: Log4net 简介 安装 Log4net 在 C# 中使用 Log4net 记录日志 配置 Log4net 输出日志的方式 示例演示 Log4net 简介 Log4net 是一个功能强大的日志组件,它是Apache的开源日志组件。使用 Log4net 可以在程序中方便地记录日志…

    C# 2023年5月15日
    00
  • ASP.NET Core 3.x 并发限制的实现代码

    下面提供一份 ASP.NET Core 3.x 并发限制的实现代码完整攻略。 一、限制并发的原理 首先介绍一下限制并发的原理。在 ASP.NET Core 中,可以通过限制同时访问的线程数来限制并发。具体实现方式是使用 SemaphoreSlim 类,该类提供了限制线程访问的功能。 SemaphoreSlim 类具有两个重要的方法 WaitAsync 和 R…

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