C#獲取進(jìn)程或線程相關(guān)信息的方法
本文實(shí)例講述了C#獲取進(jìn)程或線程相關(guān)信息的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace ConsoleApp { class ProcessDo { /// <summary> /// 獲取進(jìn)程相關(guān)信息 /// </summary> public static void GetProcessInfomation() { Process pro = Process.GetProcessesByName("QQ")[0]; Console.WriteLine("進(jìn)程名稱:" + pro.ProcessName); Console.WriteLine("進(jìn)程ID:" + pro.Id.ToString()); Console.WriteLine("啟動(dòng)時(shí)間:" + pro.StartTime.ToLongDateString() + pro.StartTime.ToLongTimeString()); Console.WriteLine("是否響應(yīng):" + pro.Responding.ToString()); Console.WriteLine("關(guān)聯(lián)進(jìn)程句柄:" + pro.Handle.ToString()); Console.WriteLine("進(jìn)程打開(kāi)的句柄數(shù):" + pro.HandleCount.ToString()); Console.WriteLine("主窗口句柄:" + pro.MainWindowHandle.ToString()); Console.WriteLine("主窗口標(biāo)題:" + pro.MainWindowTitle); Console.WriteLine("模塊數(shù)量:" + pro.Modules.Count.ToString()); Console.WriteLine("基本優(yōu)先級(jí):" + pro.BasePriority.ToString()); Console.WriteLine("提升優(yōu)先級(jí):" + pro.PriorityBoostEnabled.ToString()); Console.WriteLine("處理器:" + pro.ProcessorAffinity.ToInt32().ToString()); Console.WriteLine("最小工作集:" + pro.MinWorkingSet.ToInt32().ToString()); Console.WriteLine("最大工作集:" + pro.MaxWorkingSet.ToInt32().ToString()); Console.WriteLine("工作集:" + pro.WorkingSet.ToString()); Console.WriteLine("峰值工作集:" + pro.PeakWorkingSet.ToString()); Console.WriteLine("專用內(nèi)存大?。? + pro.PrivateMemorySize.ToString()); Console.WriteLine("未分頁(yè)內(nèi)存大?。? + pro.NonpagedSystemMemorySize.ToString()); Console.WriteLine("分頁(yè)內(nèi)存大小:" + pro.PagedMemorySize.ToString()); Console.WriteLine("峰值分頁(yè)內(nèi)存大?。? + pro.PeakPagedMemorySize.ToString()); Console.WriteLine("虛擬內(nèi)存大?。? + pro.VirtualMemorySize.ToString()); Console.WriteLine("峰值虛擬內(nèi)存大小:" + pro.PeakVirtualMemorySize.ToString()); Console.WriteLine("占用時(shí)間:" + pro.TotalProcessorTime.ToString()); Console.WriteLine("特權(quán)占用時(shí)間:" + pro.PrivilegedProcessorTime.ToString()); Console.WriteLine("用戶占用時(shí)間:" + pro.UserProcessorTime.ToString()); } /// <summary> /// 進(jìn)程的線程詳細(xì)信息 /// </summary> public static void GetProcessThreadInfomation() { Process pro = Process.GetProcessesByName("QQ")[0]; Console.WriteLine("QQ程序進(jìn)程的線程詳細(xì)信息如下:"); int length = pro.Threads.Count; for (int i = 0; i < length; i++) { var thread = pro.Threads[i]; Console.WriteLine("標(biāo)識(shí)符:" + thread.Id.ToString()); Console.WriteLine("基本優(yōu)先級(jí):" + thread.BasePriority.ToString()); Console.WriteLine("當(dāng)前優(yōu)先級(jí):" + thread.CurrentPriority.ToString()); Console.WriteLine("內(nèi)存地址:" + thread.StartAddress.ToInt32()); Console.WriteLine("啟動(dòng)時(shí)間:" + thread.StartTime.ToString()); Console.WriteLine("使用時(shí)間:" + thread.UserProcessorTime.ToString()); Console.Write("當(dāng)前狀態(tài):"); switch (thread.ThreadState) { case ThreadState.Initialized: Console.WriteLine("線程已經(jīng)初始化但尚未啟動(dòng)"); break; case ThreadState.Ready: Console.WriteLine("線程準(zhǔn)備在下一個(gè)可用的處理器上運(yùn)行"); break; case ThreadState.Running: Console.WriteLine("當(dāng)前正在使用處理器"); break; case ThreadState.Standby: Console.WriteLine("線程將要使用處理器"); break; case ThreadState.Terminated: Console.WriteLine("線程已完成執(zhí)行并退出"); break; case ThreadState.Transition: Console.WriteLine("線程在可以執(zhí)行錢等待處理器之外的資源"); break; case ThreadState.Unknown: Console.WriteLine("狀態(tài)未知"); break; case ThreadState.Wait: Console.WriteLine("正在等待外圍操作完成或者資源釋放"); break; default: break; } if (thread.ThreadState == ThreadState.Wait) { Console.Write("等待原因:"); switch (thread.WaitReason) { case ThreadWaitReason.EventPairHigh: Console.WriteLine("線程正在等待事件對(duì)高"); break; case ThreadWaitReason.EventPairLow: Console.WriteLine("線程正在等待事件對(duì)低"); break; case ThreadWaitReason.ExecutionDelay: Console.WriteLine("線程執(zhí)行延遲"); break; case ThreadWaitReason.Executive: Console.WriteLine("線程正在等待計(jì)劃程序"); break; case ThreadWaitReason.FreePage: Console.WriteLine("線程正在等待可用的虛擬內(nèi)存頁(yè)"); break; case ThreadWaitReason.LpcReceive: Console.WriteLine("線程正在等待本地過(guò)程調(diào)用到達(dá)"); break; case ThreadWaitReason.LpcReply: Console.WriteLine("線程正在等待對(duì)本地過(guò)程調(diào)用的回復(fù)到達(dá)"); break; case ThreadWaitReason.PageIn: Console.WriteLine("線程正在等待虛擬內(nèi)存頁(yè)到達(dá)內(nèi)存"); break; case ThreadWaitReason.PageOut: Console.WriteLine("線程正在等待虛擬內(nèi)存頁(yè)寫入磁盤"); break; case ThreadWaitReason.Suspended: Console.WriteLine("線程執(zhí)行暫停"); break; case ThreadWaitReason.SystemAllocation: Console.WriteLine("線程正在等待系統(tǒng)分配"); break; case ThreadWaitReason.Unknown: Console.WriteLine("線程因位置原因而等待"); break; case ThreadWaitReason.UserRequest: Console.WriteLine("線程正在等待用戶請(qǐng)求"); break; case ThreadWaitReason.VirtualMemory: Console.WriteLine("線程正在等待系統(tǒng)分配虛擬內(nèi)存"); break; default: break; } } Console.WriteLine(); } } /// <summary> /// 限制應(yīng)用程序運(yùn)行時(shí)間 /// 即關(guān)聯(lián)程序超出設(shè)置的運(yùn)行將自動(dòng)關(guān)閉 /// </summary> public static void GetKillAppForWaitTime() { Process proc = new Process(); proc.StartInfo = new ProcessStartInfo(@"C:\Documents and Settings\zkk\桌面\mysql_20120925.sql"); //啟動(dòng)應(yīng)用程序 proc.Start(); //等待程序師徒完成載入 proc.WaitForInputIdle(); //等待程序結(jié)束執(zhí)行 proc.WaitForExit(3000); //如果程序在時(shí)間期限之前關(guān)閉,HasExited將會(huì)是true if (proc.HasExited == false) { //測(cè)試程序是否已經(jīng)停止回應(yīng) if (proc.Responding) { //程序有回應(yīng),關(guān)閉主視圖 proc.CloseMainWindow(); } else { //如果程序沒(méi)有回應(yīng),將強(qiáng)制關(guān)閉 proc.Kill(); } } } } }
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
欄 目:C#教程
下一篇:C#實(shí)現(xiàn)綁定Combobox的方法
本文標(biāo)題:C#獲取進(jìn)程或線程相關(guān)信息的方法
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/7027.html
您可能感興趣的文章
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并打開(kāi)的方法
- 01-10C#實(shí)現(xiàn)遠(yuǎn)程關(guān)閉計(jì)算機(jī)或重啟計(jì)算機(jī)的方法
- 01-10C#調(diào)用dos窗口獲取相關(guān)信息的方法
- 01-10C#編程獲取資源文件中圖片的方法
- 01-10C#實(shí)現(xiàn)讀取被進(jìn)程占用的文件實(shí)現(xiàn)方法
- 01-10C#獲取任務(wù)欄顯示進(jìn)程的方法
- 01-10C#刪除只讀文件或文件夾(解決File.Delete無(wú)法刪除文件)
- 01-10C#及WPF獲取本機(jī)所有字體和顏色的方法
- 01-10C#獲取動(dòng)態(tài)生成的CheckBox值
- 01-10C#獲取網(wǎng)頁(yè)源代碼的方法


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開(kāi)原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載