用C#获取进程信息Word下载.docx

上传人:b****6 文档编号:18812705 上传时间:2023-01-01 格式:DOCX 页数:20 大小:25.76KB
下载 相关 举报
用C#获取进程信息Word下载.docx_第1页
第1页 / 共20页
用C#获取进程信息Word下载.docx_第2页
第2页 / 共20页
用C#获取进程信息Word下载.docx_第3页
第3页 / 共20页
用C#获取进程信息Word下载.docx_第4页
第4页 / 共20页
用C#获取进程信息Word下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

用C#获取进程信息Word下载.docx

《用C#获取进程信息Word下载.docx》由会员分享,可在线阅读,更多相关《用C#获取进程信息Word下载.docx(20页珍藏版)》请在冰豆网上搜索。

用C#获取进程信息Word下载.docx

Process组件用于访问系统进程。

初始化Process组件后,可使用该组件来获取有关当前运行的进程的信息。

此类信息包括线程集、加载的模块(.dll和.exe文件)和性能信息(如进程当前使用的内存量)。

系统进程在系统上由其进程标识符唯一标识。

与许多Windows资源一样,进程也由其句柄标识,而句柄在计算机上可能不唯一。

句柄是表示资源标识符的一般术语。

即使进程已退出,操作系统仍保持进程句柄,该句柄通过Process组件的Handle属性访问。

因此,可以获取进程的管理信息,如ExitCode(通常,或者为零表示成功,或者为非零错误代码)和ExitTime。

句柄是非常有价值的资源,所以句柄泄漏比内存泄漏危害更大。

七、回到frmProcessInfo.cs[设计]页,双击btnGetProcessByID按钮,则IDE自动添加btnGetProcessByID_Click事件在frmProcessInfo.cs

里。

在btnGetProcessByID_Click事件中,填写以下代码:

try

strings="

System.Int32processid;

//Retrievetheadditionalinformationaboutaspecificprocess

processid=Int32.Parse(txtProcessID.Text);

process=System.Diagnostics.Process.GetProcessById(processid);

s=s+"

该进程的总体优先级类别:

+Convert.ToString(process.PriorityClass)+"

\r\n"

由该进程打开的句柄数:

+process.HandleCount+"

该进程的主窗口标题:

+process.MainWindowTitle+"

该进程允许的最小工作集大小:

+process.MinWorkingSet.ToString()+"

该进程允许的最大工作集大小:

+process.MaxWorkingSet.ToString()+"

该进程的分页内存大小:

+process.PagedMemorySize+"

该进程的峰值分页内存大小:

+process.PeakPagedMemorySize+"

System.Windows.Forms.MessageBox.Show(s);

}

catch

System.Windows.Forms.MessageBox.Show("

不合法的进程ID!

);

【注】Int32值类型表示值介于-2,147,483,648到+2,147,483,647之间的有符号整数。

Int32提供了一些方法,来比较该类型的实例、将实例的值转换为它的String表示形式以及将数字的String表示形式转换为该类型的实例。

有关格式规范代码如何控制值类型的String表示形式的信息,请参阅格式设置概述。

此类型实现接口IComparable、IFormattable和IConvertible。

使用Convert类进行转换,而不是使用此类型的IConvertible显式接口成员实现。

八、主要代码我们已经填写完毕。

下面使用菜单“生成”>

“生成解决方案”命令后,按F5即可测试程序了。

以下为当前进程列表以及某一个特定ID进程的基本信息抓图:

 

值得一提的是,Process类具有很多成员变量,这些成员变量可以获得进程的几乎每一个细节。

上面的例子中只是简单地选择了几个成员加以演示。

如果开发中有需要,可以参考MSDNLibrary,查询Process类成员以获得更详细的信息,这里就不一一列出了。

以上通过一个简单的例子来说明如何使用.NETFramework和C#的Process类来获得进程的信息。

通过这个例子我们可以看出,C#提供给我们强大和便捷的Process类,使我们的开发更容易、更方便。

这对于编写高效、快速开发应用程序是非常有帮助的。

希望能有更多的朋友提供更好的意见和建议,也欢迎大家分享更多的开发、学习经验。

C#关闭excel进程方法[转载]

2009-07-0816:

09

一直被一个问题困扰就是导出excel时如何关闭excel进程,我使用过oExcelApp.Quit();

也用过GC回收,结果都不理想,后来发现可以kill进程,但是问题是kill进程时不好解决多人并发的使用,比如一个人在导表然后kill所以的excel但是如果同时又有人在导表那么这就把另外一个excel结束了,现在我们要办的是如何kill当前这个进程,这里我们先看一下代码:

oExcelApp.Quit();

oExcelApp=null;

PublicMethod.Kill(oExcelApp);

//调用kill当前excel进程

PublicMethod.Kill()内容是:

usingSystem.Runtime.InteropServices;

publicclassPublicMethod

publicPublicMethod()

{

//

//TODO:

在此处添加构造函数逻辑

}

[DllImport("

User32.dll"

 

CharSet 

CharSet.Auto)] 

publicstaticexternintGetWindowThreadProcessId(IntPtrhwnd,outintID);

publicstaticvoidKill(Excel.Applicationexcel)

IntPtrt=newIntPtr(excel.Hwnd);

//得到这个句柄,具体作用是得到这块内存入口

intk=0;

GetWindowThreadProcessId(t,outk);

//得到本进程唯一标志k

System.Diagnostics.Processp=System.Diagnostics.Process.GetProcessById(k);

//得到对进程k的引用

p.Kill();

//关闭进程k

这样我们就可以关闭当前进程excel而不是杀掉所有的类型为excel进程了

C#操作完EXCEL如何砌底关闭进程

2009-04-2117:

16

有用C#编程操作EXCEL的朋友可能都遇到过在操作完EXCEL之后,无法关闭EXECL进程的情况。

这样即浪费了内存资源,又会造成软件的不稳定性。

一般我位都是以下面方式关闭的,但很多时候都没成功/

System.Runtime.InteropServices.Marshal.ReleaseComObject(Range);

System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);

System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);

Range=null;

myBook=null;

myExcel=null;

C#和A下excel进程一被打开,有时就无法关闭, 

尤其是website.对关闭该进程有过GC、release等方法,但这些方法并不是在所有情况下均适用。

于是提出了kill 

process的方法, 

目前我见过的方法多是用进程创建时间筛选excel.exe进程, 

然后kill。

这样的方法是不精确的, 

也是不安全的, 

通过对网上一些关于Api运用文章的阅读, 

我找到了更为直接精确找到这个process并kill的方法,以下就是代码 

using 

System.Runtime.InteropServices;

[DllImport("

public 

static 

extern 

int 

GetWindowThreadProcessId(IntPtr 

hwnd, 

out 

ID);

protected 

void 

Button1_Click(object 

sender, 

EventArgs 

e) 

Excel.ApplicationClass 

excel 

new 

Microsoft.Office.Interop.Excel.ApplicationClass();

excel.Workbooks.Open("

d:

\aaa.xls"

Type.Missing, 

Type.Missing);

IntPtr 

IntPtr(excel.Hwnd);

0;

GetWindowThreadProcessId(t, 

k);

System.Diagnostics.Process 

System.Diagnostics.Process.GetProcessById(k);

C#导出Excel后关闭进程(EXCEL.EXE)释放资源的解决方案

2009-07-1611:

27

一年前,从网上找到一些C#导出MSExcel的例子,但是都不能彻底销毁其所创建的Excel进程,典型的就是进程中的EXCEL.EXE不能关掉。

网上的解决方案大部分是杀掉所有的Excel进程,偶一直感觉不爽。

最近,做了几个月的WinForm,接触了一些进程、句柄方面的知识。

于是试着解决一下,没想到成功了,创建的Excel进程被成功Kill掉了,而其它Excel进程则相安无事。

看代码吧:

1.usingSystem;

2.usingSystem.Collections.Generic;

3.usingSystem.Text;

4.usingSystem.Reflection;

5.usingSystem.Runtime.InteropServices;

6.usingSystem.Drawing;

7.

8.namespaceVeryCodes.Common.MyExcel

9.{

10. 

///<

summary>

11. 

///ExcelClass的摘要说明。

12. 

/summary>

13. 

publicclassMSExcel

14. 

{

15. 

16. 

///构建ExcelClass类

17. 

18. 

publicMSExcel()

19. 

20. 

//别忘了需要添加ExcelLibrary的引用

21. 

this.m_objExcel=newMicrosoft.Office.Interop.Excel.Application();

22. 

}

23. 

24. 

25. 

26. 

paramname="

objExcel"

>

Excel.Application<

/param>

27. 

publicMSExcel(Microsoft.Office.Interop.Excel.ApplicationobjExcel)

28. 

29. 

this.m_objExcel=objExcel;

30. 

31.

32. 

33. 

///列标号,Excel最大列数是256

34. 

35. 

privatestring[]ALists=newstring[]{

36. 

A"

"

B"

C"

D"

E"

F"

G"

H"

I"

J"

K"

L"

M"

N"

O"

P"

Q"

R"

S"

T"

U"

V"

W"

X"

Y"

Z"

37. 

AA"

AB"

AC"

AD"

AE"

AF"

AG"

AH"

AI"

AJ"

AK"

AL"

AM"

AN"

AO"

AP"

AQ"

AR"

AS"

AT"

AU"

AV"

AW"

AX"

AY"

AZ"

38. 

BA"

BB"

BC"

BD"

BE"

BF"

BG"

BH"

BI"

BJ"

BK"

BL"

BM"

BN"

BO"

BP"

BQ"

BR"

BS"

BT"

BU"

BV"

BW"

BX"

BY"

BZ"

39. 

CA"

CB"

CC"

CD"

CE"

CF"

CG"

CH"

CI"

CJ"

CK"

CL"

CM"

CN"

CO"

CP"

CQ"

CR"

CS"

CT"

CU"

CV"

CW"

CX"

CY"

CZ"

40. 

DA"

DB"

DC"

DD"

DE"

DF"

DG"

DH"

DI"

DJ"

DK"

DL"

DM"

DN"

DO"

DP"

DQ"

DR"

DS"

DT"

DU"

DV"

DW"

DX"

DY"

DZ"

41. 

EA"

EB"

EC"

ED"

EE"

EF"

EG"

EH"

EI"

EJ"

EK"

EL"

EM"

EN"

EO"

EP"

EQ"

ER"

ES"

ET"

EU"

EV"

EW"

EX"

EY"

EZ"

42. 

FA"

FB"

FC"

FD"

FE"

FF"

FG"

FH"

FI"

FJ"

FK"

FL"

FM"

FN"

FO"

FP"

FQ"

FR"

FS"

FT"

FU"

FV"

FW"

FX"

FY"

FZ"

43. 

GA"

GB"

GC"

GD"

GE"

GF"

GG"

GH"

GI"

GJ"

GK"

GL"

GM"

GN"

GO"

GP"

GQ"

GR"

GS"

GT"

GU"

GV"

GW"

GX"

GY"

GZ"

44. 

HA"

HB"

HC"

HD"

HE"

HF"

HG"

HH"

HI"

HJ"

HK"

HL"

HM"

HN"

HO"

HP"

HQ"

HR"

HS"

HT"

HU"

HV"

HW"

HX"

HY"

HZ"

45. 

IA"

IB"

IC"

ID"

IE"

IF"

IG"

IH"

II"

IJ"

IK"

IL"

IM"

IN"

IO"

IP"

IQ"

IR"

IS"

IT"

IU"

IV"

46. 

};

47.

48. 

49. 

///获取描述区域的字符

50. 

51. 

x"

<

52. 

y"

53. 

returns>

/returns>

54. 

publicstringGetAix(intx,inty)

55. 

56. 

if(x>

256){return"

57. 

strings="

58. 

s=s+ALists[x-1].ToString();

59. 

s=s+y.ToString();

60. 

returns;

61. 

62.

63. 

64. 

///给单元格赋值1

65. 

66. 

行号<

67. 

列号<

68. 

align"

对齐(CENTER、LEFT、RIGHT)<

69. 

text"

值<

70. 

publicvoidsetValue(inty,intx,stringalign,stringtext)

71. 

72. 

Microsoft.Office.Interop.Excel.Rangerange=sheet.get_Range(this.GetAix(x,y),miss);

73. 

range.set_Value(miss,text);

74. 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1