C# 如何获取当前进程或线程的ID

 更新时间:2022年04月20日 08:44:46   作者:comsky  
这篇文章主要介绍了C# 如何获取当前进程或线程的ID,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

获取当前进程或线程的ID

如果获得当前进程的Id用:

Process[] processes = Process.GetProcesses(); 
foreach(Process process in processes) 
{ 
if(process.ProcessName == "进程名" 
{ 
MessageBox.Show(process.Id); 
} 
}
Process processes   =Process.GetCurrentProcess

processes.id获取当前进程的ID

如果获取当前线程的ID用:

Thread.CurrentThread.ManagedThreadId.ToString() (推荐)

AppDomain.GetCurrentThreadId().ToString()

C# 进程读取方法

首相要加入using System.Diagnostics;命名空间。

GetProcesses()、Modules属性。

一些进程的属性信息:

  • Id // 进程唯一标识符 (Id)
  • Handle //关联进程的本机句柄 (Handle)
  • HandleCount //打开句柄数 (HandleCount)
  • BasePriority //关联进程的基本优先级
  • StartTime //进程启动时间
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;//包含进程相关
namespace ProccessEx
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Process[] processes = null;
        private void btnGetProcessess_Click(object sender, EventArgs e)
        {
            processes = Process.GetProcesses();// 获取本地计算机上的进程
            this.lbProcess.Items.Clear();
            foreach (Process item in processes) {
                this.lbProcess.Items.Add(item.ProcessName);
            }
        }
        private void lbProcess_Click(object sender, EventArgs e)
        {
            if (lbProcess.Items.Count == 0) return;
            else {
                lbModels.Items.Clear();
            }
            Process currentProcess = processes[lbProcess.SelectedIndex]; // SelectedIndex 属性
            try {
                ProcessModuleCollection modules = currentProcess.Modules; // Mpdules 属性
                foreach (ProcessModule item in modules) {  // 注意是 ProcessModule 类型
                    lbModels.Items.Add(item.FileName);
                }
                // 显示当前进程的基本信息
                string info = "进程唯一标识符 (Id):" + currentProcess.Id + "\r\n\r\n";
                info += "关联进程的本机句柄 (Handle):" + currentProcess.Handle + "\r\n\r\n";
                info += "打开句柄数 (HandleCount):" + currentProcess.HandleCount + "\r\n\r\n";
                info += "关联进程的基本优先级:" + currentProcess.BasePriority + "\r\n\r\n";
                info += "进程启动时间:" + currentProcess.StartTime + "\r\n\r\n";
                txtProcessInfo.Text = info;
            }
            catch (Exception ex) {
                MessageBox.Show(ex.Message);
            }
        }
        private void btnKill_Click(object sender, EventArgs e)
        {
            if (lbProcess.Items.Count == 0 || lbProcess.SelectedIndex == -1) return;
            Process currentProccess = processes[lbProcess.SelectedIndex];// 获取当前鼠标选择的进程
            currentProccess.Kill();// 杀掉进程
            currentProccess.Close();// 释放进程资源
            lbProcess.Items.RemoveAt(lbProcess.SelectedIndex);
            lbModels.Items.Clear();
            txtProcessInfo.Clear();
        }
        /// <summary>
        /// 用360浏览器打开我的博客
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpenIE_Click(object sender, EventArgs e)
        {
            // 没注册就使用绝对路径
            // 打开我的博客
            Process.Start(@"C:\Users\Administrator\AppData\Roaming\360se6\Application\360se.exe", "blog.huvjie.com");
        }
        /// <summary>
        /// 打开新进程,如:notepad
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnStartnew_Click(object sender, EventArgs e)
        {
            Process.Start(txtProcessFileName.Text.Trim());
        }
    }
}

输出效果:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Winform启动另一个项目传值的方法

    Winform启动另一个项目传值的方法

    这篇文章主要介绍了Winform启动另一个项目传值的方法,通过调用进程来实现项目之间的传值,需要的朋友可以参考下
    2014-11-11
  • C#中richtextbox使用方法详解

    C#中richtextbox使用方法详解

    这篇文章主要介绍了C#中richtextbox使用方法,分析较为详尽,需要的朋友可以参考下
    2014-07-07
  • C# 中的GroupBy的动态拼接问题及GroupBy<>用法介绍

    C# 中的GroupBy的动态拼接问题及GroupBy<>用法介绍

    这篇文章主要介绍了C# 中的GroupBy的动态拼接问题,在文章给大家提到了C# List泛型集合中的GroupBy<>用法详解,需要的朋友可以参考下
    2017-12-12
  • 基于C#设计一个带导航菜单的主界面

    基于C#设计一个带导航菜单的主界面

    这篇文章主要为大家详细介绍了如何基于C#设计一个带导航菜单的主界面,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • c#生成缩略图的实现方法

    c#生成缩略图的实现方法

    c#生成缩略图的实现方法,需要的朋友可以参考一下
    2013-04-04
  • C# 从字符串中分离文件路径、文件名及扩展名的操作

    C# 从字符串中分离文件路径、文件名及扩展名的操作

    在C#中,处理文件时经常需要分离文件路径、文件名和扩展名,通过使用Microsoft.Win32命名空间和字符串处理方法如Substring、IndexOf()和LastIndexOf(),可以有效地获取和操作这些信息,本文介绍C# 字符串中分离文件路径,感兴趣的朋友一起看看
    2024-09-09
  • C# winform中窗口关闭按钮的隐藏与禁用详解

    C# winform中窗口关闭按钮的隐藏与禁用详解

    这篇文章主要介绍了C# winform中窗口关闭按钮的隐藏与禁用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C#获取时间戳的方法及时间戳转换问题

    C#获取时间戳的方法及时间戳转换问题

    本文主要介绍了C#获取时间戳的方法及时间戳转换问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • C#编程实现QQ界面的方法

    C#编程实现QQ界面的方法

    这篇文章主要介绍了C#编程实现QQ界面的方法,较为详细的分析了C#实现模拟QQ登录界面的具体步骤与相关实现代码,需要的朋友可以参考下
    2016-03-03
  • 关于C#10 新特性 Lambda 优化

    关于C#10 新特性 Lambda 优化

    这篇文章主要介绍了C# 10 新特性 Lambda 优化,C# 10 对于 Lambda 做了很多的优化,我们可以在 C# 中更加方便地使用委托和 Lambda 了,下面就来看一些示例,需要的朋友也可以参考一下
    2021-11-11

最新评论