ProcessStartInfo.Verbs 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得動詞命令集,這個動詞命令集與 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 時,必須包含擴展名。 擴展名會決定一組可能的動詞。