ProcessStartInfo.Verbs 屬性

定義

取得動詞命令集,這個動詞命令集與 FileName 屬性所指定的檔案類型相關聯。

public:
 property cli::array <System::String ^> ^ Verbs { cli::array <System::String ^> ^ get(); };
public string[] Verbs { get; }
[System.ComponentModel.Browsable(false)]
public string[] Verbs { get; }
member this.Verbs : string[]
[<System.ComponentModel.Browsable(false)>]
member this.Verbs : string[]
Public ReadOnly Property Verbs As String()

屬性值

String[]

動作,系統可以將這個動作套用至 FileName 屬性所指定的檔案。

屬性

範例

下列程式代碼範例會顯示所選取檔名的已定義動詞。 如果使用者選取其中一個已定義的動詞,此範例會使用選取的動詞和輸入檔名來啟動新的進程。

using System;
using System.ComponentModel;
using System.IO;
using System.Diagnostics;
using System.Windows.Forms;

class ProcessInformation
{
    [STAThread]
    static void Main()
    {
        OpenFileDialog openFileDialog1 = new OpenFileDialog();

        openFileDialog1.InitialDirectory = "c:\\";
        openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
        openFileDialog1.FilterIndex = 2;
        openFileDialog1.RestoreDirectory = true;
        openFileDialog1.CheckFileExists = true;

        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            var fileName = openFileDialog1.FileName;

            int i = 0;
            var startInfo = new ProcessStartInfo(fileName);

            // Display the possible verbs.
            foreach (var verb in startInfo.Verbs)
            {
                Console.WriteLine($"  {i++}. {verb}");
            }

            Console.Write("Select the index of the verb: ");
            var indexInput = Console.ReadLine();
            int index;
            if (Int32.TryParse(indexInput, out index))
            {
                if (index < 0 || index >= i)
                {
                    Console.WriteLine("Invalid index value.");
                    return;
                }

                var verbToUse = startInfo.Verbs[index];

                startInfo.Verb = verbToUse;
                if (verbToUse.ToLower().IndexOf("printto") >= 0)
                {
                    // printto implies a specific printer.  Ask for the network address.
                    // The address must be in the form \\server\printer.
                    // The printer address is passed as the Arguments property.
                    Console.Write("Enter the network address of the target printer: ");
                    var arguments = Console.ReadLine();
                    startInfo.Arguments = arguments;
                }

                try
                {
                    using (var newProcess = new Process())
                    {
                        newProcess.StartInfo = startInfo;
                        newProcess.Start();

                        Console.WriteLine($"{newProcess.ProcessName} for file {fileName} " +
                                          $"started successfully with verb '{startInfo.Verb}'!");
                    }
                }
                catch (Win32Exception e)
                {
                    Console.WriteLine("  Win32Exception caught!");
                    Console.WriteLine($"  Win32 error = {e.Message}");
                }
                catch (InvalidOperationException)
                {
                    // Catch this exception if the process exits quickly,
                    // and the properties are not accessible.
                    Console.WriteLine($"Unable to start '{fileName}' with verb {verbToUse}");
                }
            }
        }
        else
        {
            {
                Console.WriteLine("You did not enter a number.");
            }
        }
    }
}
Imports System.ComponentModel
Imports System.IO
Imports System.Diagnostics
Imports System.Windows.Forms

Module ProcessInformation
    Public Shared Sub Main()
        Dim openFileDialog1 As New OpenFileDialog()

        openFileDialog1.InitialDirectory = "c:\"
        openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        openFileDialog1.FilterIndex = 2
        openFileDialog1.RestoreDirectory = True
        openFileDialog1.CheckFileExists = True

        If openFileDialog1.ShowDialog() = DialogResult.OK Then
            Dim fileName = openFileDialog1.FileName

            Dim i = 0
            Dim startInfo = New ProcessStartInfo(fileName)

            Dim verb As String
            For Each verb In startInfo.Verbs
                ' Display the possible verbs.
                Console.WriteLine($"  {i}. {verb}")
                i += 1
            Next

            Console.Write("Select the index of the verb: ")
            Dim indexInput = Console.ReadLine()
            Dim index As Integer
            If Int32.TryParse(indexInput, index) Then
                If index < 0 OrElse index >= i Then
                    Console.WriteLine("Invalid index value.")
                    Return
                End If

                Dim verbToUse = startInfo.Verbs(Convert.ToInt32(index))

                startInfo.Verb = verbToUse
                If verbToUse.ToLower().IndexOf("printto") >= 0 Then
                    ' printto implies a specific printer.  Ask for the network address.
                    ' The address must be in the form \\server\printer.
                    Console.Write("Enter the network address of the target printer: ")
                    Dim arguments = Console.ReadLine()
                    startInfo.Arguments = arguments
                End If

                Try
                    Using newProcess As New Process
                        newProcess.StartInfo = startInfo
                        newProcess.Start()

                        Console.WriteLine($"{newProcess.ProcessName} for file {fileName} " +
                                          $"started successfully with verb '{startInfo.Verb}'!")
                    End Using
                Catch e As Win32Exception
                    Console.WriteLine("  Win32Exception caught!")
                    Console.WriteLine($"  Win32 error = {e.Message}")
                Catch e As InvalidOperationException
                    Console.WriteLine($"Unable to start '{fileName}' with verb {verbToUse}")
                End Try
            Else
                Console.WriteLine("You did not enter a number.")
            End If
        End If
    End Sub
End Module

備註

屬性 Verbs 可讓您判斷可與 屬性所 FileName 指定的檔案搭配使用的動詞。 您可以將 屬性設定 Verb 為集合中任何動詞命令的值。 動詞的範例包括 「Edit」、“Open”、“OpenAsReadOnly”、“Print” 和 “Printto”。

請注意,產生的動詞清單可能不會包含所有可能的值,例如「新增」是設計不會新增至清單,而其他可能動詞不一定會根據您的系統設定來偵測。

當您使用 Verbs 屬性時,當您設定 屬性的值 FileName 時,必須包含擴展名。 擴展名會決定一組可能的動詞。

適用於

另請參閱