如何在托管 C++ 中使用 Process 类






3.50/5 (9投票s)
2004年1月5日
2分钟阅读

83882

1574
本文解释了如何在托管 C++ 应用程序中使用 Process 类
引言
进程最简单的定义是应用程序的执行实例。进程至少包含一个线程。线程是操作系统的基本单元。Windows是一个多任务操作系统。每个进程至少包含一个线程。Windows NT系列系统和基于Windows 95/98的系统支持抢占式多任务处理。因此,我们可以自由地处理多个线程和多个处理器。
Process
类
在Microsoft .NET框架中,所有命名空间都派生自Object
。System.Diagnostics
命名空间提供有关进程状态的信息,启动新进程等。在这个命名空间中,允许启动新进程、终止进程等。
在进程类中,允许监视本地系统进程信息或远程系统进程信息。我们还可以与ProcessThread
和ProcessModule
类交互。ProcessStartup
类提供参数传递等。ProcessStartInfo
构造函数用于初始化进程信息。
ProcessStartInfo
包含以下属性。
参数
arguments属性用于像ShellExecute
函数一样在文件名中设置参数。
文件名
FileName
属性用于设置应用程序名称。我们可以在启动进程类之前设置此属性。
UseShellExecute
如果将其设置为True
,我们可以执行文件操作(例如,打印该文件中的内容)。如果设置为False
,我们只执行应用程序。
WindowStyle
我们在进程启动时设置和获取WindowStyle
。
WaitForExit
WaitForExit
属性用于等待进程一段时间。
例如:
Notepad->waitForExit(1000) // 等待1000秒。
终止
Kill
属性用于终止当前正在运行的进程。
例如: notePad->Kill();
以下代码用于启动记事本。它等待1000秒,并使用Process
类中的kill属性自动将其终止。
// Create Process
Process *notePad = new Process();
// set the filename
notePad->StartInfo->FileName = "notepad.exe";
// Arguments
notePad->StartInfo->Arguments = "textfile.txt";
//Start the process
notePad->Start();
// Wait for 1000 secounds
notepad->waitForExit(1000);
//Kill the process
notepad->Kill();
进程线程类
进程线程包含有关当前正在运行的进程的信息。我们控制进程中的线程。我们设置或获取线程属性,例如低、高。进程线程类包含以下属性。
BasePriority
BasePriority
用于获取优先级。
CurrentPriority
CurrentPriority
类用于获取当前优先级。
PriorityLevel
PriorityLevel
用于获取或设置优先级级别。
ThreadState
ThreadState
用于获取当前状态。
ProcessModule
类
ProcessModule
类用于获取有关进程模块的信息。在ProcessModule
类中,属性用于获取信息,例如获取模块名称、模块中的内存大小等。
以下代码解释了使用ProcessModule
类获取模块名称、文件信息等的用法。
// Create process
Process *notePad = new Process();
// set filename
notePad->StartInfo->FileName = "notepad.exe";
//Arguments
notePad->StartInfo->Arguments = "selvam.txt";
//Start
notePad->Start();
//Sleep
System::Threading::Thread::Sleep(1000);
//Create processmodule class
ProcessModule *myProcessModule;
myProcessModule = notePad->MainModule;
String *strFileName, *strModuleName;
int nMemory;
//Get the process file name, Module name etc..
strFileName = myProcessModule->FileName;
strModuleName = myProcessModule->ModuleName;
nMemory = myProcessModule->ModuleMemorySize;
结论
.NET框架用于简化编程模型。因此,我们可以轻松地与操作系统交互。Process
类可用于启动新进程、停止现有进程和控制进程。ProcessModule
类用于获取正在运行的应用程序中的模块信息。