65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.50/5 (9投票s)

2004年1月5日

2分钟阅读

viewsIcon

83882

downloadIcon

1574

本文解释了如何在托管 C++ 应用程序中使用 Process 类

引言

进程最简单的定义是应用程序的执行实例。进程至少包含一个线程。线程是操作系统的基本单元。Windows是一个多任务操作系统。每个进程至少包含一个线程。Windows NT系列系统和基于Windows 95/98的系统支持抢占式多任务处理。因此,我们可以自由地处理多个线程和多个处理器。

Process

在Microsoft .NET框架中,所有命名空间都派生自ObjectSystem.Diagnostics命名空间提供有关进程状态的信息,启动新进程等。在这个命名空间中,允许启动新进程、终止进程等。

在进程类中,允许监视本地系统进程信息或远程系统进程信息。我们还可以与ProcessThreadProcessModule类交互。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类用于获取正在运行的应用程序中的模块信息。

© . All rights reserved.