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());
        }
    }
}

输出效果:

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

相关文章

  • C#删除字符串中重复字符的方法

    C#删除字符串中重复字符的方法

    这篇文章主要介绍了C#删除字符串中重复字符的方法,涉及C#针对字符串的遍历及移除等操作的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • C# BeginInvoke实现异步编程方式

    C# BeginInvoke实现异步编程方式

    这篇文章主要介绍了C# BeginInvoke实现异步编程方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 详解C#打开和关闭可执行文件

    详解C#打开和关闭可执行文件

    这篇文章主要介绍了C#打开和关闭可执行文件,以QQ应用程序为例,需要的朋友可以参考下
    2015-12-12
  • c#反射表达式树模糊搜索示例

    c#反射表达式树模糊搜索示例

    这篇文章主要介绍了c#反射表达式树模糊搜索示例,反射实体T,非datetime字段反射获取表达式树,需要的朋友可以参考下
    2014-02-02
  • WPF如何实现日期范围选择器

    WPF如何实现日期范围选择器

    这篇文章主要为大家详细介绍了WPF如何实现日期范围选择器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • C#自定义日志记录

    C#自定义日志记录

    这篇文章主要为大家详细介绍了C#自定义日志记录的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • C#用户控件之温度计设计

    C#用户控件之温度计设计

    这篇文章主要为大家详细介绍了C#用户控件之温度计的设计方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • C# 解决在Dictionary中使用枚举的效率问题

    C# 解决在Dictionary中使用枚举的效率问题

    这篇文章主要介绍了C# 解决在Dictionary中使用枚举的效率问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 在WPF中实现平滑滚动的方法详解

    在WPF中实现平滑滚动的方法详解

    这篇文章介绍了WPF实现平滑滚动的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#基础知识之new关键字介绍

    C#基础知识之new关键字介绍

    在 C# 中,new 关键字可用作运算符、修饰符或约束,本文主要介绍这三种用法。
    2016-04-04

最新评论