Process.StartInfo Proprietà

Definizione

Ottiene o imposta le proprietà da passare al metodo Start() del componente Process.

public:
 property System::Diagnostics::ProcessStartInfo ^ StartInfo { System::Diagnostics::ProcessStartInfo ^ get(); void set(System::Diagnostics::ProcessStartInfo ^ value); };
public System.Diagnostics.ProcessStartInfo StartInfo { get; set; }
[System.ComponentModel.Browsable(false)]
public System.Diagnostics.ProcessStartInfo StartInfo { get; set; }
member this.StartInfo : System.Diagnostics.ProcessStartInfo with get, set
[<System.ComponentModel.Browsable(false)>]
member this.StartInfo : System.Diagnostics.ProcessStartInfo with get, set
Public Property StartInfo As ProcessStartInfo

Valore della proprietà

Oggetto ProcessStartInfo che rappresenta i dati con i quali avviare il processo. Tra gli argomenti sono compresi il nome del file eseguibile o il documento usato per avviare il processo.

Attributi

Eccezioni

Il valore che specifica la proprietà StartInfo è null.

Solo .NET Core e .NET 5+: il Start() metodo non è stato usato per avviare il processo.

Esempio

Nell'esempio seguente viene popolato un StartInfo oggetto con il file da eseguire, l'azione eseguita su di essa e se deve visualizzare un'interfaccia utente. Per altri esempi, vedere le pagine di riferimento per le proprietà della ProcessStartInfo classe .

#using <System.dll>
using namespace System;
using namespace System::Diagnostics;
using namespace System::ComponentModel;

int main()
{
    Process^ myProcess = gcnew Process;

    try
    {
        myProcess->StartInfo->UseShellExecute = false;
        // You can start any process, HelloWorld is a do-nothing example.
        myProcess->StartInfo->FileName = "C:\\HelloWorld.exe";
        myProcess->StartInfo->CreateNoWindow = true;
        myProcess->Start();
        // This code assumes the process you are starting will terminate itself. 
        // Given that it is started without a window so you cannot terminate it 
        // on the desktop, it must terminate itself or you can do it programmatically
        // from this application using the Kill method.
    }
    catch ( Exception^ e ) 
    {
        Console::WriteLine( e->Message );
    }
}
using System;
using System.Diagnostics;
using System.ComponentModel;

namespace MyProcessSample
{
    class MyProcess
    {
        public static void Main()
        {
            try
            {
                using (Process myProcess = new Process())
                {
                    myProcess.StartInfo.UseShellExecute = false;
                    // You can start any process, HelloWorld is a do-nothing example.
                    myProcess.StartInfo.FileName = "C:\\HelloWorld.exe";
                    myProcess.StartInfo.CreateNoWindow = true;
                    myProcess.Start();
                    // This code assumes the process you are starting will terminate itself.
                    // Given that it is started without a window so you cannot terminate it
                    // on the desktop, it must terminate itself or you can do it programmatically
                    // from this application using the Kill method.
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Imports System.Diagnostics
Imports System.ComponentModel

Namespace MyProcessSample
    Class MyProcess
        Public Shared Sub Main()
            Try
                Using myProcess As New Process()

                    myProcess.StartInfo.UseShellExecute = False
                    ' You can start any process, HelloWorld is a do-nothing example.
                    myProcess.StartInfo.FileName = "C:\\HelloWorld.exe"
                    myProcess.StartInfo.CreateNoWindow = True
                    myProcess.Start()
                    ' This code assumes the process you are starting will terminate itself. 
                    ' Given that it is started without a window so you cannot terminate it 
                    ' on the desktop, it must terminate itself or you can do it programmatically
                    ' from this application using the Kill method.
                End Using
            Catch e As Exception
                Console.WriteLine((e.Message))
            End Try
        End Sub
    End Class
End Namespace

Commenti

StartInfo rappresenta il set di parametri da utilizzare per avviare un processo. Quando Start viene chiamato , viene StartInfo usato per specificare il processo da avviare. L'unico membro necessario StartInfo da impostare è la FileName proprietà . L'avvio di un processo specificando la FileName proprietà è simile alla digitazione delle informazioni nella finestra di dialogo Esegui del menu Start di Windows. Pertanto, la FileName proprietà non deve rappresentare un file eseguibile. Può essere di qualsiasi tipo di file per cui l'estensione è stata associata a un'applicazione installata nel sistema. Ad esempio, può avere un'estensione .txt se sono stati associati file di testo a un editor, ad esempio FileName blocco note, oppure può avere un .doc se sono stati associati file .doc con uno strumento di elaborazione delle parole, ad esempio Microsoft Word. Analogamente, allo stesso modo in cui la finestra di dialogo Esegui può accettare un nome di file eseguibile con o senza l'estensione .exe, l'estensione .exe è facoltativa nel FileName membro. Ad esempio, è possibile impostare la FileName proprietà su "Notepad.exe" o "Blocco note".

È possibile avviare un'applicazione ClickOnce impostando la FileName proprietà sul percorso ,ad esempio un indirizzo Web, da cui è stata originariamente installata l'applicazione. Non avviare un'applicazione ClickOnce specificandone il percorso installato nel disco rigido.

Se il nome del file comporta un file non eseguibile, ad esempio un file .doc, è possibile includere un verbo che specifica l'azione da eseguire sul file. Ad esempio, è possibile impostare su Verb "Stampa" per un file che termina con l'estensione .doc. Il nome file specificato nella FileName proprietà non deve avere un'estensione se si immette manualmente un valore per la Verb proprietà . Tuttavia, se si utilizza la Verbs proprietà per determinare quali verbi sono disponibili, è necessario includere l'estensione.

È possibile modificare i parametri specificati nella StartInfo proprietà fino al momento in cui si chiama il Start metodo nel processo. Dopo aver avviato il processo, la modifica dei StartInfo valori non influisce o riavvia il processo associato. Se si chiama il Start(ProcessStartInfo) metodo con le ProcessStartInfo.UserName proprietà e ProcessStartInfo.Password impostate, viene chiamata la funzione non gestita CreateProcessWithLogonW , che avvia il processo in una nuova finestra anche se il valore della CreateNoWindow proprietà è true o il valore della WindowStyle proprietà è Hidden.

È consigliabile accedere alla StartInfo proprietà solo su un Process oggetto restituito dal Start metodo . Ad esempio, non è consigliabile accedere alla StartInfo proprietà in un Process oggetto restituito da GetProcesses. In caso contrario, in .NET Core la StartInfo proprietà genererà un'eccezione InvalidOperationException e in .NET Framework restituirà un oggetto fittizio ProcessStartInfo .

Quando il processo viene avviato, il nome del file è il file che popola la proprietà (di sola lettura). MainModule Se si desidera recuperare il file eseguibile associato al processo dopo l'avvio del processo, usare la MainModule proprietà . Se si desidera impostare il file eseguibile di un'istanza Process per cui non è stato avviato un processo associato, utilizzare il StartInfo membro della FileName proprietà. Poiché i membri della proprietà sono argomenti passati al Start metodo di un processo, la modifica della StartInfoFileName proprietà dopo l'avvio del processo associato non reimposta la MainModule proprietà. Queste proprietà vengono utilizzate solo per inizializzare il processo associato.

Si applica a

Vedi anche