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#实现鼠标钩子可以用来监视和控制鼠标事件,比如截取特定的鼠标事件、拦截在系统中发生的鼠标消息等。这里提供完整攻略,具体过程如下: 准备工作 在开始实现之前,需要准备以下工作: 安装Visual Studio,该IDE提供C#开发环境。选择安装.NET桌面开发工作负载,并安装所需的组件。 创建一个新的C#控制台应用程序项目。 添加一个引用System.Win…

    C# 2023年6月1日
    00
  • C# 中的”智能枚举”之如何在枚举中增加行为(示例代码)

    在 C# 中的智能枚举是指使用 C# 的枚举类型 Enum,通过使用扩展方法,在枚举类型中增加行为方法,从而提高代码的可读性和可维护性。下面我们来详细讲解如何在枚举中增加行为。 1.枚举类型定义 在开始之前,我们先定义一个示例的枚举类型,如下所示: public enum LanguageType { [Description("C#")…

    C# 2023年6月6日
    00
  • C#实现将json转换为DataTable的方法

    将一个Json字符串转换为DataTable可以使用Json.NET库来实现。具体步骤如下: 步骤一:安装Json.NET库 在Visual Studio中打开NuGet包管理器,搜索并安装Newtonsoft.Json库。 注:也可以通过在项目的Package Manager控制台输入以下命令进行安装: Install-Package Newtonsoft…

    C# 2023年5月31日
    00
  • 详解C# Socket编程笔记

    接下来我会进行详细讲解“详解C# Socket编程笔记”的完整攻略。 1. 引言 Socket编程是计算机网络通信中不可或缺的一部分,它能够实现不同设备间的数据传输。在C#中,大多数网络通信的实现都是通过Socket类实现的。然而,Socket编程并不是一件容易的事情,需要掌握一些底层原理和API调用,本文主要介绍C# Socket编程的基础知识和实现方法。…

    C# 2023年6月8日
    00
  • VS2022使用ClickOnce发布程序本地安装.net框架

    因为遇到下面的错误,没有在网上搜到详细解决问题的教程,费了一些时间才解决了问题,特此记录一下,也希望能帮助到其他人。  要在“系统必备”对话框中启用“从与我的应用程序相同的位置下载系统必备组件”,必须将“.NET 桌面运行时 6.0.14 (x64)”项的文件“net6desktopruntime_x64\windowsdesktop-runtime-6.0…

    C# 2023年5月7日
    00
  • C#利用SFTP实现上传下载

    准备工作 在使用C#利用SFTP实现上传和下载之前,首先需要安装SSH.NET NuGet包和.NET Framwork 4.5或以上版本。 打开Visual Studio,创建一个新的控制台应用程序,并打开包管理控制台,输入以下命令安装SSH.NET: Install-Package SSH.NET 实现SFTP上传 SFTP上传是通过SSH协议在服务器上…

    C# 2023年6月1日
    00
  • C# 利用Autofac批量接口注入依赖的问题小结

    首先我们需要明确“依赖注入”和“Autofac”的概念。 依赖注入是一种设计模式,它可以使代码更加灵活,易于扩展和测试。在依赖注入中,对象之间的依赖关系不是在对象内部被创建,而是通过外部容器提供的依赖注入机制来实现的。这样,整个系统可以视为由各个松散耦合的模块组成,每个模块都可以独立开发和测试。 Autofac是一个开源的.NET依赖注入框架,可以将依赖注入…

    C# 2023年6月3日
    00
  • C#中循环语句:while、for、foreach的使用

    C#中循环语句:while、for、foreach的使用 循环语句是编程中非常常用的语句结构之一。C#语言中提供了三种不同的循环语句,分别是while、for和foreach。在这篇文章中,我们将详细讲解这三种循环语句的用法,包括其语法、示例和注意事项。 while循环 while循环在执行时,先判断循环条件是否满足,如果满足则执行循环体中的语句,然后再次判…

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