C#?如何獲取當(dāng)前進(jìn)程或線程的ID
獲取當(dāng)前進(jìn)程或線程的ID
如果獲得當(dāng)前進(jìn)程的Id用:
Process[] processes = Process.GetProcesses();?
foreach(Process process in processes)?
{?
if(process.ProcessName == "進(jìn)程名"?
{?
MessageBox.Show(process.Id);?
}?
}
Process processes ? =Process.GetCurrentProcessprocesses.id獲取當(dāng)前進(jìn)程的ID
如果獲取當(dāng)前線程的ID用:
Thread.CurrentThread.ManagedThreadId.ToString() (推薦)
或
AppDomain.GetCurrentThreadId().ToString()
C# 進(jìn)程讀取方法
首相要加入using System.Diagnostics;命名空間。
GetProcesses()、Modules屬性。
一些進(jìn)程的屬性信息:
Id// 進(jìn)程唯一標(biāo)識(shí)符 (Id)Handle//關(guān)聯(lián)進(jìn)程的本機(jī)句柄 (Handle)HandleCount//打開(kāi)句柄數(shù) (HandleCount)BasePriority//關(guān)聯(lián)進(jìn)程的基本優(yōu)先級(jí)StartTime//進(jìn)程啟動(dòng)時(shí)間
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;//包含進(jìn)程相關(guān)
namespace ProccessEx
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Process[] processes = null;
private void btnGetProcessess_Click(object sender, EventArgs e)
{
processes = Process.GetProcesses();// 獲取本地計(jì)算機(jī)上的進(jìn)程
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 類(lèi)型
lbModels.Items.Add(item.FileName);
}
// 顯示當(dāng)前進(jìn)程的基本信息
string info = "進(jìn)程唯一標(biāo)識(shí)符 (Id):" + currentProcess.Id + "\r\n\r\n";
info += "關(guān)聯(lián)進(jìn)程的本機(jī)句柄 (Handle):" + currentProcess.Handle + "\r\n\r\n";
info += "打開(kāi)句柄數(shù) (HandleCount):" + currentProcess.HandleCount + "\r\n\r\n";
info += "關(guān)聯(lián)進(jìn)程的基本優(yōu)先級(jí):" + currentProcess.BasePriority + "\r\n\r\n";
info += "進(jìn)程啟動(dòng)時(shí)間:" + 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];// 獲取當(dāng)前鼠標(biāo)選擇的進(jìn)程
currentProccess.Kill();// 殺掉進(jìn)程
currentProccess.Close();// 釋放進(jìn)程資源
lbProcess.Items.RemoveAt(lbProcess.SelectedIndex);
lbModels.Items.Clear();
txtProcessInfo.Clear();
}
/// <summary>
/// 用360瀏覽器打開(kāi)我的博客
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOpenIE_Click(object sender, EventArgs e)
{
// 沒(méi)注冊(cè)就使用絕對(duì)路徑
// 打開(kāi)我的博客
Process.Start(@"C:\Users\Administrator\AppData\Roaming\360se6\Application\360se.exe", "blog.huvjie.com");
}
/// <summary>
/// 打開(kāi)新進(jìn)程,如:notepad
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStartnew_Click(object sender, EventArgs e)
{
Process.Start(txtProcessFileName.Text.Trim());
}
}
}
輸出效果:

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C# BeginInvoke實(shí)現(xiàn)異步編程方式
這篇文章主要介紹了C# BeginInvoke實(shí)現(xiàn)異步編程方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
詳解C#打開(kāi)和關(guān)閉可執(zhí)行文件
這篇文章主要介紹了C#打開(kāi)和關(guān)閉可執(zhí)行文件,以QQ應(yīng)用程序?yàn)槔?,需要的朋友可以參考?/div> 2015-12-12
C# 解決在Dictionary中使用枚舉的效率問(wèn)題
這篇文章主要介紹了C# 解決在Dictionary中使用枚舉的效率問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
在WPF中實(shí)現(xiàn)平滑滾動(dòng)的方法詳解
這篇文章介紹了WPF實(shí)現(xiàn)平滑滾動(dòng)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
C#基礎(chǔ)知識(shí)之new關(guān)鍵字介紹
在 C# 中,new 關(guān)鍵字可用作運(yùn)算符、修飾符或約束,本文主要介紹這三種用法。2016-04-04最新評(píng)論

