Exportar (0) Imprimir
Expandir todo

Process (Clase)

Actualización: noviembre 2007

Proporciona acceso a procesos locales y remotos, y permite iniciar y detener procesos del sistema local.

Espacio de nombres:  System.Diagnostics
Ensamblado:  System (en System.dll)

[HostProtectionAttribute(SecurityAction::LinkDemand, SharedState = true, Synchronization = true, 
	ExternalProcessMgmt = true, SelfAffectingProcessMgmt = true)]
[PermissionSetAttribute(SecurityAction::LinkDemand, Name = L"FullTrust")]
[PermissionSetAttribute(SecurityAction::InheritanceDemand, Name = L"FullTrust")]
public ref class Process : public Component
/** @attribute HostProtectionAttribute(SecurityAction.LinkDemand, SharedState = true, Synchronization = true, ExternalProcessMgmt = true, SelfAffectingProcessMgmt = true) */
/** @attribute PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust") */
/** @attribute PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust") */
public class Process extends Component
public class Process extends Component

ccf1tfx0.alert_note(es-es,VS.90).gifNota:

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el siguiente valor de la propiedad Resources: SharedState | Synchronization | ExternalProcessMgmt | SelfAffectingProcessMgmt. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación de SQL Server y atributos de protección del host.

ccf1tfx0.alert_note(es-es,VS.90).gifNota:

A partir de la versión 2.0 de .NET Framework, se ha eliminado la posibilidad de hacer referencia a los datos del contador de rendimiento en otros equipos para muchos de los métodos y propiedades de .NET Framework. Este cambio se ha realizado para mejorar el rendimiento y permitir a los usuarios que no son administradores utilizar la clase Process. Como resultado, algunas aplicaciones que no generaban excepciones en versiones anteriores de .NET Framework, ahora pueden generar una NotSupportedException. Los métodos y propiedades que se ven afectados por este cambio son demasiado numerosos como para enumerarlos aquí todos, pero se ha agregado la información de excepción a los temas de los miembros afectados.

Un componente Process proporciona acceso a un proceso que se está ejecutando en un equipo. Un proceso, dicho de un modo sencillo, es una aplicación en ejecución. Un subproceso es la unidad básica a la que el sistema operativo asigna tiempo de procesador. Un subproceso puede ejecutar cualquier parte del código del proceso, incluidas las partes que otro subproceso esté ejecutando en ese momento.

El componente Process es una herramienta útil para iniciar, detener, controlar y supervisar aplicaciones. Mediante el componente Process se puede obtener una lista de los procesos en ejecución o se puede iniciar un nuevo proceso. Un componente Process se utiliza para obtener acceso a los procesos del sistema. Un componente Process, una vez inicializado, puede utilizarse para obtener información sobre el proceso en ejecución. Entre la información proporcionada se incluye el conjunto de subprocesos, los módulos cargados (archivos .dll y .exe) y la información de rendimiento, por ejemplo, la cantidad de memoria que está utilizando el proceso.

Si dispone de una variable de ruta de acceso declarada en el sistema mediante comillas, debe especificar la ruta de acceso completa al iniciar cualquier proceso que se encuentre en esa ubicación. De lo contrario, el sistema no encontrará la ruta de acceso. Por ejemplo, si la ruta c:\mypath no se encuentra en su ruta de acceso y la agrega utilizando comillas (path = %path%;"c:\mypath"), debe especificar el nombre completo de cualquier proceso que se encuentre en c:\mypath al iniciarlo.

El componente del proceso obtiene la información sobre un grupo de propiedades toda de una vez. Después de que el componente Process haya obtenido la información sobre un miembro de cualquier grupo, almacena en la memoria caché los valores del resto de las propiedades de ese grupo y no obtiene nueva información sobre el resto de los miembros del grupo hasta que se llama al método Refresh. Por lo tanto, no se garantiza que un valor de propiedad sea más reciente que la última llamada al método Refresh. Los detalles del grupo dependen del sistema operativo.

Un proceso del sistema se identifica de manera inequívoca en el sistema mediante un identificador de proceso. Como sucede con la mayoría de los recursos de Windows, un proceso se identifica también mediante un identificador, que puede no ser único en el equipo. Un identificador es el término genérico que hace referencia a un identificador de un recurso. El sistema operativo conserva el identificador del proceso, al que se obtiene acceso a través de la propiedad Handle del componente Process, aunque el proceso haya terminado. De este modo, se puede obtener la información administrativa del proceso, como ExitCode (normalmente, cero para indicar que es correcto o un código de error distinto de cero) y ExitTime. Los identificadores son un recurso extremadamente valioso, por lo que su pérdida es mucho más dañina que la pérdida de memoria.

ccf1tfx0.alert_note(es-es,VS.90).gifNota:

Esta clase contiene una petición de vínculo y una petición de herencia en el nivel de clase que se aplica a todos los miembros. Se produce una excepción SecurityException si el llamador inmediato o la clase derivada no dispone de permisos de plena confianza. Para obtener más información sobre las peticiones de seguridad, vea Peticiones de vínculos y Peticiones de herencia.

En el siguiente ejemplo se utiliza una instancia de la clase Process para iniciar un proceso.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::ComponentModel;

// These are the Win32 error code for file not found or access denied.
#define ERROR_FILE_NOT_FOUND 2
#define ERROR_ACCESS_DENIED  5
int main()
{
   Process^ myProcess = gcnew Process;
   try
   {

      // Get the path that stores user documents.
      String^ myDocumentsPath = Environment::GetFolderPath( Environment::SpecialFolder::Personal );
      myProcess->StartInfo->FileName = String::Concat( myDocumentsPath, "\\MyFile.doc" );
      myProcess->StartInfo->Verb = "Print";
      myProcess->StartInfo->CreateNoWindow = true;
      myProcess->Start();
   }
   catch ( Win32Exception^ e ) 
   {
      if ( e->NativeErrorCode == ERROR_FILE_NOT_FOUND )
      {
         Console::WriteLine( "{0}. Check the path.", e->Message );
      }
      else
      if ( e->NativeErrorCode == ERROR_ACCESS_DENIED )
      {

         // Note that if your word processor might generate exceptions
         // such as this, which are handled first.
         Console::WriteLine( "{0}. You do not have permission to print this file.", e->Message );
      }
   }

}



En el siguiente ejemplo se utiliza la propia clase Process y un método Start estático para iniciar un proceso.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::ComponentModel;

/// <summary>
/// Opens the Internet Explorer application.
/// </summary>
void OpenApplication( String^ myFavoritesPath )
{

   // Start Internet Explorer. Defaults to the home page.
   Process::Start( "IExplore.exe" );

   // Display the contents of the favorites folder in the browser.
   Process::Start( myFavoritesPath );
}


/// <summary>
/// Opens urls and .html documents using Internet Explorer.
/// </summary>
void OpenWithArguments()
{

   // url's are not considered documents. They can only be opened
   // by passing them as arguments.
   Process::Start( "IExplore.exe", "www.northwindtraders.com" );

   // Start a Web page using a browser associated with .html and .asp files.
   Process::Start( "IExplore.exe", "C:\\myPath\\myFile.htm" );
   Process::Start( "IExplore.exe", "C:\\myPath\\myFile.asp" );
}


/// <summary>
/// Uses the ProcessStartInfo class to start new processes, both in a minimized 
/// mode.
/// </summary>
void OpenWithStartInfo()
{
   ProcessStartInfo^ startInfo = gcnew ProcessStartInfo( "IExplore.exe" );
   startInfo->WindowStyle = ProcessWindowStyle::Minimized;
   Process::Start( startInfo );
   startInfo->Arguments = "www.northwindtraders.com";
   Process::Start( startInfo );
}

int main()
{

   // Get the path that stores favorite links.
   String^ myFavoritesPath = Environment::GetFolderPath( Environment::SpecialFolder::Favorites );
   OpenApplication( myFavoritesPath );
   OpenWithArguments();
   OpenWithStartInfo();
}



  • LinkDemand 

    para que haya plena confianza para el llamador inmediato. Esta clase no puede ser utilizada por código de confianza parcial.

  • InheritanceDemand 

    para que haya plena confianza para los herederos. Esta clase no puede ser heredada por código de confianza parcial.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft