应用API管理进程 应用API管理进程

应用API管理进程

  • 期刊名字:电脑编程技巧与维护
  • 文件大小:498kb
  • 论文作者:倪显利
  • 作者单位:
  • 更新时间:2020-06-12
  • 下载次数:
论文简介

实用第一氵智慧密集应用API管理进程倪显利摘要:进程是一个具有独立功能的程序,对进程进行有效地管理,保障安全、高效运行有着重要意义。简要介绍了进程及其相关概念,并通过编程实例,阐述了管理进程实用类的开发和设计方法。关键词:进程;状态;管理;线程;模块;类;权限进程是操作系统中最基本、重要的概念。多道程序在执行一个进程从主线程的执行开始进而创建一个或多个附加线程,时,需要共享系统资源,从而导致各程序在执行过程中出现相就是所谓基于多线程的多任务。互制约的关系,程序的执行表现出间断性的特征。这些特征都进程是由进程控制块、程序段、数据段3部分组成。一个是在程序的执行过程中发生的,是动态的过程,而传统的程序进程可以包含若干线程,线程可以帮助应用程序同时做几件本身是一组指令的集合,是一个静态的概念,无法描述程序在事,比如:一个线程向磁盘写入文件,另一个则接收用户的按内存中的执行情况,既无法从程序的字面上肴出它何时执行,键操作并及时做出反应,互相不干扰,在程序被运行后,系统何时停顿,也无法看出它与其他执行程序的关系,因此,程序首先要做的就是为该程序进程建立一个默认线程,进程然后程这个静态概念已不能如实反映程序并发执行过程的特征。为了序可以根据需要自行添加或删除相关的线程。是可并发执行的深刻描述程序动态执行过程的性质,人们引人“进程(Po程序。在一个数据集合上的运行过程,是系统进行资源分配和ces)”概念调度的一个独立单位,也是称活动、路径或任务,它有两方面进程的概念是上个世纪六十年代初首先由麻省理工学院的性质:活动性、并发性。MULTICS系统和IBM公司的CTSS360系统引入的。在Win进程与线程的区别,进程是执行程序的实例。例如,当运dows3x操作系统下,进程是最小运行单位。而在 Windows95/行记事本程序( Nodepad. exe)时,就创建了一个用来容纳组成NT及其以后版本的 Window操作系统下,进程又被细化为线 Notepad.exe的代码及其所需调用动态链接库的进程。每个进程程,也就是一个进程下有多个能独立运行的更小的单位。每个均运行在其专用且受保护的地址空间内。因此,如果同时运行进程还可以启动几个线程,线程是最小单位,比如每下载一个记事本的两个拷贝,该程序正在使用的数据在各自实例中是彼文件可以单独开一个线程。此独立的。在记事本的一个拷贝中将无法看到该程序的第二个1进程及其相关概念实例打开的数据。实际上线程运行而进程不运行。两个进程彼此获得专用数据或内存的唯一途径只有通过一种协作策略协议进程是操作系统进行资源分配和独立运行的基本单元(单来共享内存块。但是对于线程由于 Window的多任务特性使得位)。进程是操作系统结构的基础;是一个正在执行的程序;它们之间不但独立运行,而且彼此共享虚拟空间,也就是共用是计算机中正在运行的程序实例;是可以分配给处理器并由处变量,线程能够同时操作一片内存理器执行的一个实体;是由单一顺序的执行显示,一个当前状简而言之,线程就是把一个进程分为很多片,每一片都可态和一组相关的系统资源所描述的活动单元以是一个独立的流程。这已经明显不同于多进程了,进程是在谈到进程时,还要涉及到线程的概念。线程是可执行代个拷贝的流程,而线程只是把一条河流截成很多条小溪。它没码的可分派单元。这个名称来源于“执行的线索”的概念。在有拷贝这些额外的开销,但是仅仅是现存的一条河流,就被多基于线程的多任务的环境中,所有进程有至少一个线程,但是线程技术几乎无开销地转成很多条小流程。进程开销大,线程它们可以具有多个任务。这意味着单个程序可以并发执行两个开销较小,这就是最基本的区别。或者多个任务。进程是指在系统中正在运行的一个应用程序;2进程的状态线程则是系统分配处理器时间资源的基本单元,或者说进程之独立执行的一个单元。对于操作系统而言,其调度单元是线rV凵中国煤化工即运行、阻塞和就程。一个进程至少包括一个线程,通常将该线程称为主线程。并随CNMHG运行,运行一阻塞,阻24201101/电技巧与维护编程语言PR0 GRAM LANGUAGE……塞一就绪。“进程ID"来彼此区别的。(1)执行状态:CPU正在执行,即进程正在占用cPU。进程可以分为系统进程和用户进程。系统进程是用于完成(2)就绪状态:进程已经具备的执行一切条件,正在等待操作系统的各种功能的进程,它们就是处于运行状态下的操作分配CPU的处理时间片系统本身,最基本的系统进程,也就是说,这些进程是系统运(3)停止状态:进程不能使用cPU。行的基本条件,有了这些进程,系统就能正常运行。在“Win正常来说进程有这3种状态,但是在特殊情况下,例如:dows任务管理器”的“进程”选项卡中,第二列“用户名子进程与父进程之间的调度或网络因素等原因,会多出一种状列出的是“ SYSTEM"。用户进程就是所有由用户开启、执行的态,这就是“僵尸进程( Zombie)”,僵尸进程将会导致系统资额外程序的进程。在“ Windows任务管理器”的“进程”选项源的浪费。僵尸进程是非常特殊的一种,它已经放弃了几乎所卡中,第二列“用户名”列出的是“ LOCAL SERVICE"、有内存空间,没有任何可执行代码,也不能被调度,仅仅在进 NETWORK SERVICE"、" Administrator”以及其他用户名称程列表中保留一个位置,记载该进程的退出状态等信息供其他等等。进程收集,除此之外,僵尸进程不再占有任何内存空间。通常情况下,如果子进程的状态为“僵尸”时,父进程就不会自动5进程管理类的设计与实现结束,从而其占用的系统资源就不会自动释放,这样就降低了在 Windows操作系统中如何管理进程,识别隐藏进程,甄操作系统的性能别病毒的进程并及时中断它们,对于系统的安全、平稳地运行3进程与程序具有重要意义。在这里设计一个管理进程的实用类,该类没有使用传统的方法(例如: Process32Firt、 Process32Next函数等进程是程序在计算机上的一次执行活动。每运行一个程等)来列举系统中的进程,而是使用循环来穷举系统中的进程序,就启动了一个进程。显然,程序是静态的,进程是动态(系统中的“进程ID”一般不会超过五位数),重点就是在这的。对应用程序来说,进程就像一个大容器,在应用程序被运里:因为无论是隐藏的进程,还是一般的进程,只要 OpenPro-行后,就相当于将应用程序装进容器里了,可以往容器里加其ce函数的第三个参数是一个系统当前真实存在的“进程他东西,例如:应用程序在运行时所需的变量数据、需要引用1D",那么 Open Proces函数就有返冋值。的DLL文件等,当应用程序被运行两次时,容器里的东西并本例为了增强代码的可复用性和可维护性,将所有对进程不会被倒掉,系统会找一个新的进程容器来容纳它。的管理和维护功能集成封装到一个通用管理类中。采用简单的进程为应用程序的运行实例,是应用程序的一次动态执办法使用 Visual basic2008专门提供的预定义 Windows Al声行。它是操作系统当前运行的执行程序。在系统当前运行的执明,引用所需要的API函数,在类模块中定义 GetProcesseg行程序里包括:系统管理计算机个体和完成各种操作所必需的类,用于实现下述管理功能:程序;用户开启、执行的额外程序,当然也包括用户不知道而(1)枚举各类进程,包括一般进程、隐藏进程和僵尸进程。自动运行的非法程序,它们就有可能是病毒程序。(2)枚举进程引用的所有模块(比如:exe和山等等)。危害较大的可执行病毒同样以“进程”形式出现在系统内(3)中断进程等等部,但是一些病毒可能并不被进程列表显示,例如:“宏病51公共类模块处理毒”,所以及时查看并准确杀掉非法进程对于手工杀毒有起着定义一个进程管理类,增加类模块 Get Processes vb,源程关键性的作用。序如下:4进程管理Option Strict OffOption Explicit On进程是由它们所运行的可执行程序实例来识别的,在 Option Compare BinaryWindows任务管理器”的“进程”选项卡中,第一列“映象 Friend Class GetProcessesPrivate Declare Function CloseHandle Lib kernel32. dIl"名称”列出的是可执行程序文件名称。但这里并没有进程名称 (By al hObject As Integer) As Integer列,因为进程并不拥有独立于其所归属实例的映射名称。编程Private Declare Function GetlastError Lib"kernel32. dII'0中是通过它们的“进程ID”来标识的,因为每个进程都拥有 As Integer其独一无二的标识编码。各个“进程ID”由 Window操作系Private Declare Function Open Process Lib kernel32. dll统自动生成,并可以循环使用。因此,“进程ID”将不会超4 wDesiredAccess As Integer,, ByVal blnherItHandle编越大,它们能够得到循环利用。例如:如果运行3个记事本中国煤化 ger)As Integers First Lib kernel32. dll拷贝,将会看到3个称为 Notepad.exe的进程,它们就是通过AlasC N MH GShot As Integer, ByRef2011.01电脑覆技巧与维护、实用第一氵智慧密集uProcess As PROCESSENTRY32) As IntegerPrivate Const ToKEN DUPLICATE As Short =&H2SPrivate Declare Function ProcessNext Li" kerne32d·要求复制访问信令Alias'Process32Next' ( By Val sNap Shot As Integer, By RefPrivate Const TOKEN IMPERSONATE As Short = &H4SuProcess As PROCESSENTRY32)As Integer要小将模仿访问信令连到进程上Private Declare Function Terminate Process Lib kerne 32.Private Const ToKEN QUERY As Short=&H8S要求查dll'(ByVal hProcess As Integer, ByVal uExit Code As Integer询访问信令的内容Private Const ToKEN QUERY SOURCE As ShortPrivate Declare Function Enum Processessapi. d&H10s‘要求查询访问信令源(By Ref IpidProcess As Integer, B Val cb As Integer, By RefPrivate Const TOKEN ADJUST PRIVILEGES As shortcbNeeded As Integer) As Integer&H20S要求改变访问信令中指定的权限Private Declare Function EnumProcessModules Lib ' psapiPrivate Const TOKEN ADJUST GROUPS As Shortdr( ByVal pRocess As Integer, By Ref lphModule As Integer,&H40S要求改变访问信令中指定的组ByVal cb As Integer, ByRef lpcbNeeded As Integer) As Inte-Private Const TOKEN ADJUST DEFAULT As Short&H80S要求改变访问信令的缺省ACL,主组或属主Private Declare Function GetProcesslmage File Name LibPrivate Const TOKEN ADJUST_ SESSIONID As Shortpsapi. dll Alias 'GetProcessimage FileName'( ByVal hPro&H100S在 Windows2000、 Windows XP及其以后的版本中cess As Integer, ByVal lplmage FileName As String.Bwva‘新增权限,在 Windows nt4.0中访问令牌的访问控制列表中sIze As Integer) As Integer是没有这个值的Private Declare Function GetModule FileNameEx LibPrivate Const TOKEN_ READ As Boolean STAN-psapi. dil Alias'GetModule FileName ExA'(ByVal hProcess As DARD_ RIGHTS_READ Or TOKEN_QUERYInteger, Byal hModule As Integer ByVal lpFileName AsPrivate Const ToKEN WRITE As Boolean STAN-String, By Val n Size As Integer) As IntegerDARD RIGHTS WRITE Or TOKEN_ ADJUST_ PRIVILEGES Or进程操作的功能常数TOKEN ADJUST GROUPS Or TOKEN_ ADJUST DEFAULTPrivate Const DELETE As Integer=&H10000删除访问Private Const ToKEN_EXECUTE As Object STANPrivate Const READ CONTROL As Integer &H20000DARD RIGHTS EXECUTE不包括系统ACL的安全描述行的读访问Private Const TOKEN_ ALL_ ACCESS_P As BooleanPrivate Const WRITE_DAC As Integer = &H40000STANDARD RIGHTS REQUIRED Or TOKEN_ASSIGN_PRI-任选ACL的写访问MARY Or TOKEN DUPLICATE Or TOKEN IMPERSONATEPrivate Const WRITE_OWNER As Integer &H80000Or ToKEN QUERY Or TOKEN QUERY SOURCE Or TO-所有者的写访问KEN ADJUST PRIVILEGEs Or TOKEN ADJUST GROUPSPrivate Const SYNCHRONIZE As Integer &H100000Or ToKEN ADJUST DEFAULT* STANDARD RIGHTs_+同步访问,在 Windows nt中允许在任何等待函数中使用进 REQUIRED标准访问权限与其他访问权限进行组合程句柄来等待进程的结束Private Const TOKEN ALL ACCESS As Boolean TO-Private Const SPECIFIC_ RIGHTS_ALL As ShortKEN_ ALL ACCESS_ P Or TOKEN_ ADJUST_ SESSIONID& HFFFFS表示所有的特定权利,也包含那些不为对象定义的增加 TOKEN ADJUST SESS|OND权限Private Const STANDARD_RIGHTS_ READ As IntegerPrivate Const TOKEN_ALL_ ACCESS &H1F01 FFREAD CONTROL当前定义等同 READ CONTROL设置特权属性定义Private Const STANDARD_ RIGHTS_WRITE As IntegerPrivate Const SE PRIVILEGE ENABLED BY DEFAULTREAD CONTROL’当前定义等同 READ CONTROLAs Short=&H1S权限被缺省允许Private Const STANDARD_ RIGHTS_ EXECUTE As IntegPrivate Const SE PRIVILEGE ENABLED As short=READ_ CONTROL当前定义等同 READ CONTROL&H2S权限被允许Private Const STANDARD RIGHTS REQUIRED As Inte-Private Const SE PRIVILEGE REMOVED As shortger=&HF000组合 DELETE READ CONTROLWRITE_DAC、&H4S‘权限被禁止WRITE OWNER访问Private Const sE PRIVilEGE USED FOR ACCESs AsPrivate Const STANDARD_ RIGHTS_ ALL As IntegerInteger=&H8000000°权限被用来获取对一个对象或服务的&H1F0000组合READ CONTROL、 WRITE DAC、“访问。这标志被用来标识一个集合中的适当权限,该集合由WRITE OWNER SYNCHRONIZE访问个客户应用程序传递,其中可能含有不必要的权限。Private Const GENERIC_ALL As Integer= &H10000000定义进程对家的访问权限访问信令定义的访向权限说明Const PROcess TFRMINATE As short =&H1SPrivate Const ToKEN_ASSIGN_ PRIMARY As short = t中国煤化工利进程句柄米结束进程&H1S‘要求除了 SE CREATE TOKEN NAME权限之外,还要CNMHGE- THREAD AS Short把主信令连到进程上8H2函数中使用进程句柄创建4040z9数霭鳊编程语言…PR0 GRAM LANGUAGE.…该进程的一个线程Private Const ERROR_ NOT_ ALL ASSIGNED As ShoPrivate Const PROCESS SET SESSIONID As Short 1300&H4SPrivate Const ANYSIZE ARRAY As short =1Private Const PROCESS VM OPERATION As ShortPrivate Structure LUID&H8S允许在 VirtualProtectEx和 Write ProcessMemory函数Dim Low Part As Integer中使用进程句柄来修改进程的虚拟内存im High Part As IntegerPrivate Const PROCESS VM READ As short =&H10SEnd Structure允许在 ReadProcessMemory函数中使用进程句柄来读取进Private Structure LUID AND ATTRIBUT程的虚拟内存Dim pLaid As LUIDPrivate Const PROCESSITE As Short &H20SDim Attributes As Integer允许在 WriteProcessMemory函数中使用进程句柄来写入进End Structure程的虚拟内存Private Structure TOKEN PRIVILEGESPrivate Const PROCESS DUP HANDLE As ShortDim Privilege Count As Integer&H40S‘允许在 DuplicateHandle函数中使用进程句柄作为源 Dim Privileges As进程或目标进程来复制一个句柄LUID AND ATTRIBUTESPrivate Const Process CREATE PRoCEss As shortPublic Sub Initialized&H80S‘内部使用ReDim Privileges(ANYSIZE_ARRAYPrivate Const PROCESS SET QUOTA As ShortEnd SubH100SEnd StructurePrivate Const PROCESS SET INFORMATION As ShortPrivate Const MAX PATH As short= 260&H20S允许在 SetPriority Class I函数中使用进程句柄来设置Private Structure PROCESSENTRY32进程的优先级。Dim dwSize As IntegerPrivate Const PROCESS QUERY INFORMATIONDim cntUsage As IntegerShort=&H400S‘允许在 GetExitCode Process和 GetPriori-Dim th32ProcesslD As Integerty Class函数中使用进程句柄来读取进程对象的信息Dim th32DefaultHeaplD As IntegerPrivate Const PROCESS SUSPEND RESUME As shortDim th32ModulelD As IntegerDim cnt Threads As IntegerPrivate Const PROCESS ALL_ ACCESS As BooleanDim th32Parent ProcessID As IntegerSTANDARD RIGHTS RED Or SYNCHRONIZE OrDim pcPri Class Base As Integer& HFFFS定义进程对象的所有可能访问标志Dim dwFlags As IntegerPrivate Const PROCESS HEAP REGION As Short Pub-As short = &H2Slic szExeFile( As CharPrivate Const PROCESS HEAP ENTRY BUSY As ShortEnd Structure&H4S自定义数据类型Private Const PROCESS HEAP ENTRY MOVEABLEPrivate Structure PROCEsS INFOShort =&H10SDim ProcessType As shortPrivate Const PROCESS HEAP ENTRY DDESHARE AsDim ProcessID As IntegerShort =&H20SDim FileName As StringPrivate Const PRoCess XP HEADER_ CACHE As inteEnd Structure=&H20000Private Var Process Counter As IntegerPrivate Const TH32CS_ SNAPheaplist As Short &H1SPrivate Var Module Counter As IntegerPrivate Const TH32CS SNAPPROCESS As Short =&H2SPrivate Var ProcessInfo() As PROCESS INFOPrivate Const TH32CS SNAPthread As short &H4SPrivate VarModule( As StringPrivate Const TH32CS SNAPmodule As short = &H8S本代码靠 pspl. d的 Enum ProcessModules函数列举,若Private Const TH32CS SNAPall As Boolean用系统 kerne32d的 GetModule FileName函数则需先提升TH32CS SNAPPROCESs Or TH32CS SNAPheaor权限TH32CS SNAPthread Or TH32CS_ SNAPmodulePrivate Function Open Processes As Boolean进程操作的错误信息代码中国煤化工Private Const ERROR SUCCESS As Short=0Private Const ERROR_ACCESS_ DENIED As short=5CNMHG>摄好车Q27实用第一;氵智慧密集Dim M As IntegerReDim Preserve Var ProcessInfo(N)Dim VarLength As IntegerVarProcessinfo(N) Process Type= 2Dim Var ProcessHandle As integerVar Processinfo(N). ProcessID= IDim VarHide Flag As BooleanVarProcessInfo(N). FileName= Trim(VarFileName)Dim VarProcesslD(1023)As IntegerEnd IfDim VarModules(1023 )As IntegerCall CloseHandle(Var ProcessHandle初始化相关的参数End IfN=0VarProcess counter=0‘初始化计数器End If将所有进程的PD记入到数组 Var ProcessID中(注意:不包括隐藏进程!)Open Processes TrueIf EnumProcesses (arProcesslD (0), 4096, Var-Catch Errors As ExceptionLength)<>0 ThenOpen Processes FalseVarProcess Counter= VarLength \4 VarProcess-End TryCounter为进程总数(注意:不包括颱威进程!)End FunctionFor I=0 To &HFFFF Step 4Private Function OpenModules (By Val VarProcessID AsVarProcessHandle Open Process(PRo- Integer) As BooleanCESS QUERY INFORMATION Or PROCESS VM READ, 0Dim VarProcessHandle As IntegerIf Var ProcessHandle <>0 ThenDim VarFileName As String系统中有|这个进程时Dim Var Modules(1023)As IntegerVarHide Flag= True初始化相关的参数以下是判断枚举到的进程是否为隐藏进程的代码Var Module Counter=0‘初始化计数器For M=0 To VarProcess Counter -1 Step 1Var ProcessHandle Open Process (PRO-If I= VarProcessl D(M)ThenCESS QUERY_ INFORMATION Or PROCESS_VM_ READ, 0,VarHide Flag FalseVarProcessIDExit ForCall Enum ProcessModules Nar ProcessHandle Var-End忏Modules(O),4096,O)列举模块名称地址Next MDo Until VarModules(Var Module Counter)=0VarFileName= Space(1024)创建缓冲区VarFileName= Space1024)‘建立模块名称缓冲区把进程模块记入到数组 VarModules中(号Call GetModule File Ex (VarProcessHandle元素是进程全路径,其他是进程模块全路径VarModules(VarModule Counter), Var FileName, 1024)If EnumProcessModules (varProcessHan-填充模块名dle, VarModules(0), 4096, 0 )<>0 ThenReDim Preserve VarModule Names (arModule-GetModule FileNameEx的返回值是 CounterVarFileName的字符串长度Var ModuleNames Var Module Counter) LeftCall GetModule FileNameEx (VarPro- ( Name, InStr(1, VarFileName, vbNullChar)-1cessHandle, VarModules(0), Var FileName 1024)修正模块名ReDim Preserve VarProcessinfo(N)VarModule Counter VarModule Counter +1VarProcessInfo (N). ProcessType IlfLoopNarHide Flag True, 1, 0)OpenModules TrueVar ProcessInfo(N). ProcessID ICatch Errors As ExceptionVarProcessInfo(N). FileName Trim(Var File Name)Open Modules FalseN=N+End TryElself VarModules(0)<>0 ThenEnd Function获取进程映像路径,有时结束后的进程会留下,叫“定义类模块的方法尸进程”Public Sub InitializeGetProcesslmage FileName的返回值是VarFileName字符串长度的两倍-1中国煤化工Call GetProcesslmage FileName (VarPro-CNMHGcessHandle, VarFileName 1024)28201101编技巧与护方数据編程语言PROGRAM LANGUAGE.………………Erase Var ProcessInfoForms Form closedEventArgs) Handles Me FormClosedErase VarModuleNamesVarGetProcesses NothingCatch Errors As ExceptionEnd Sub错误处理Private Sub ListView1_Column Click(ByVal event SenderEnd SubForms. ColumnClick EventArgs) Handles ListView1 Colum-52显示进程信息的表单下面设计一个“进程管理器",用以说明上述进程管理类Me. ListView1Sorting System Windows Forms. Sor-tOrder Descending的使用方法。首先在Foml上添加一个 Label控件name为LaMe ListView 1. ListViewltem Sorter New ListViewltem-bell,一个 Text Box控件name为 TextI,一个 List View控件 Comparer(eventArgs Columnname为 List viewl,一个 Context MenuStrip控件name为ConMe ListView.Sort(text MenuStripl,一个 ImageList控件name为 Imagelistl,一个End SubToolTip控件name为 ToolTip,两个 Command Button控件namePrivate Sub ListView1_Double Click(ByVal event Senderdl、 Command2,如图I所示。As System Object, ByVal eventArgs As System. EventArgs)Handles ListView 1. Double Click增加模块代码,源程序如下If Not Me. ListView1, Focusedltem Is Nothing ThenEnd ifEnd SubPrivate Sub ListView1_Mouse Down (ByVal eventSenderAs System Object, ByVal eventArgs As System WindowForms. Mouse EventArgs) Handles ListView1 Mouse DownSelect Case eventArgs ButtonCase Windows. Forms. Mouse Buttons. Left, Win-dows Forms Mouse Buttons MiddleIf Me. ListView1 Focusedltem Is Nothing ThenExit SubMe. ListView1.GetltemAt (eventArgs. x, even-tArgs. Y).Selected TrueEnd IfCase Windows Forms. MouseButtons RightOption Strict OffMe. ListView1 ContextMenuStrip Me Con-Option Explicit OntextMenuStrip1Option Compare BinaEnd SelectFriend Class Form1End subInherits System. Windows Forms FormPublic Sub Menulnterrupt Process_Click (By ValPrivate Var GetProcesses As New GetProcesseseventSender As System Object, By Val eventArgs As syPrivate Sub Form1_Load (ByVal eventSender As Sys- tem EventArgs) Handles MenulnterruptProcess Clicktem Object, By Val eventArgs As System. EventArgs) HandlesIf Not Me. ListView1 Focusedltem Is Nothing ThenMy Base LoadIf Var GetProcesses. InterruptProcess (CInt (Me.Me. ListView1 LargelmageList Me ImageList1ListView1. Focuseditem Subitems(1). Text))= True theneToolTip1 SetToolTip(Me ListView1.“‘双击左键显示Me ListView 1 Items. RemoveAt(Me. ListView1 Fo-该进程运行的所有模块!'+ vbCrLf+‘单击键:显示中断进程 cusedltem Index运行的菜单!MsgBox中断进程成功!‘. Msg Style. Infor-Me Show)mation+ MsgBoxStyle. OkOnly.系统运行信息提示:7Command1_Click(Command1, New System. EventArgsMsgBox中断进程失败!" Msg Style. ExclaEnd SubmatPrivate Sub Form1_FormClosed ( ByVal event Sender AsYH中国煤化工错误倍息提小System Object, By Val eventArgsSystem. WindowsCNMHG实用第一氵智慧密集End SubList View1,一个 Image List控件name为 ImageList1,一↑Private Sub Command1_Click (Byal eventSenderToolTip控件name为 ToolTip,两个 Command Button控件nameSystem Object, By Val eventArgs As System. EventArgs))为 Commandl、 command,如图2所示。Handles Command 1. ClickDim I As IntegerDim varListViewltem As New ListViewltemSystem. Windows Forms. Cursor. Current = SystemWindows Forms. Cursors. AppStartingMe. Command 1. Enabled= FalseMe Text1. Text = CStr(Nothing)VarGetProcesses. Initialize(If VarGetProcesses Canvass Processes True ThenMe Text1. Text CStr (Var GetProcesses. Process.For 1=0 To Var GetProcesses. Process Counter-1Step 1Select Case VarGetProcesses Process Type(l)Case0·正常进程图2VarListViewltem Me ListView1 ItemAd正常进程,0)Case1‘隐藏进程增加模块代码,源程序如下VarListViewltem Me ListView1 ItemOption Strict OffAdd'隐藏进程;1)Case2‘慑尸进程Option Compare BinaryVarListViewltem Me ListView1 ItemsAdd'儼尸进程2)Inherits System. Windows Forms FormCase ElsePrivate VarGetProcesses As New GetProcessesEnd SelectPrivate Sub Form2_Load (ByVal event Sender As Sys-VarListViewitem. Subltems Add(VarGetProcesses. tem Object, ByVal eventArgs As System. EventArgs)HandlesProcesslD(O). ToStringMy Base LoadVarListViewltem. Subitems. Add(Var GetProcessesFile Name(0))Me Show()Command1_ Click(Command1, New System EverEnd IftArgs())Me Command1 Enabled TrueEnd SubSystem. Windows Forms. Cursor. Current SystemPrivate Sub Form2_ Form Closed(ByVal eventSender AsWindows Forms Cursors. ArrowSystem Object, ByVal eventArgs As System. Windows.End SubForms Form Closed EventArgs) Handles Me FormClosedPrivate Sub Command2_Click (By Val eventsender AsVar GetProcesses NothingSystem Object, ByVal eventArgs As System. EventArgs)End SubHandles Command2 ClickPrivate Sub ListView1_ Column Click(By al event SenderMe Close(As System Object, ByVal eventArgs As System. WindowsEnd SubForms. Column Click EventArgs) Handles ListView1 Colum-End ClassMe. ListView1 ListViewltem Sorter New ListViewltem53显示模块信息的表单Comparer(eventArgs Column)Me. ListView1 Sorting System Windows Forms. Sor-下面设计一个被调用的显示进程所引用的cxe、DL文件 torder Ascending等模块信息的表单,同样用以说明上述进程管理类的使用方中国煤化工法。首先在Fom1上添加一个 Label控件nme为 Labell,个 Text Box控件name为Text1,一↑ Listview控件name为CN MHG(Byal event As30电脑技巧与编程语言……PR0 GRAM LANGUAGE…System Object, Byal eventArgs As System. EventArgs) Handles Command2 ClickHandles Command1. ClickMe Close)System. Windows Forms. Cursor. Current System. End ClassWindows Forms. Cursors. AppStarting54运行效果Me Command1 Enabled False如图3所示。Me Text1.Text= CStr(Nothing)Me. ListView1 Items ClearIf VarGetProcesses. CanvassModules (al(Form1ListView1. Focusedltem. Subitems(1). Text))= True ThenMe. Text1. TextStr (Var GetProcesses. ModuleCounterFor I =0 To VarGetProcesses Module CounterepMe. ListView1 Items Add(Var GetProcesses. Modu-1,1leName(), owa Thareneea arNext IEnd IfMe Command1 Enabled TrueSystem. Windows Forms. Cursor, Current Sys-测」tem Windows Forms. Cursors. Arrow出nd SubPrivate Sub Command2_Click (ByVal eventSender AsSystem Object, By al eventArgs As System. EventArgs(收稿日期:2010-1007)(上接第14页)CoLORREF clrCtlText RGB(0, 0, 159);退出4实验FILE * agencys: agencys=forcorpus, wt";∥读出向中的内容保存到文件中使用这个程序做了大量的人工分词和词性标注的实验,实if(agencys==NULL) return验结果显示,这个程序既能够有效处理简体汉字语料,也能够CStdioFile agents(agencys处理 Unicode编码的繁体汉字语料,大大提高了人工分词及词for( int i=0: i totalLines: i++)性标注的速度和正确率agents. WriteString(linesliD)agents. Close参考文献(10)小键盘中“检验标注”和“强制提交”两个命令按钮的单击响应消息与“提交标注”相似,对“检验标注”[陈小荷,现代汉语自动分析— Visual c+实现[M],北命令按钮的单击响应消息的代码只编写至京:语言文化大学出版社,2000if( m_ appear I =")2]刘开瑛.中文文本自动分词和标注M].北京:商务印书Update Data(FALSE)Updatewindow0eturn:〔3] D.S. Malik,著,晏海华,等,译,C+编程—数据结构结束即可。与程序设计方法.北京:电子工业出版社,2003强制提交”命令按纽的单击响应消息可以复制“提交{4]梁水,王家胜.视频学 Visual c++.北京:人民邮电出版标注”的代码,只要去掉上面的这两行代码就行了。(11)如果想要使这个辅助程序更加美观一点,只要选(收稿日期:2010-10-11)取“ Class View",找到这个对话框App类的 InitInstance0函数,在 AfxEnable ControlContainer0;下面添加三行代码即可:中国煤化工CoLORREF clrCtlBk RGB(230, 242, 255):CNMHG3

论文截图
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。