本文演示如何启动与给定文档扩展名或文件类型关联的应用程序,而不需知道关联应用程序的名称或位置。 例如,可以使用与 .bmp 文件扩展名关联的应用程序启动 Arcade.bmp,大多数情况下,该应用程序为 MSPaint.exe。
}gU]fEW O6T!)4M& MS ^TDJ,] 要求
Ln T7S H Microsoft Visual Basic .NET
M=Y-|BM 指定 ProcessStartInfo 信息
.''d CQ 可以使用 .NET 框架 Process 类的 ProcessStartInfo 结构指定启动进程时的选项。 本文概述了如何使用文件名选项。 另一个成员 UseShellExecute 指定根据文件扩展名或文件类型启动进程,而不是根据可执行文件 (.exe) 的名称。 默认情况下,此属性设置为 True。 为了便于说明,在此代码中特意明确设置了该属性。
M\d,Fp!o- Dim fileName as String = "\eula.txt"
33z;lT y Dim sysFolder As String = _
1u QZ> Environment.GetFolderPath(Environment.SpecialFolder.System)
AP "!\l~^4 Dim pInfo As New ProcessStartInfo()
*ATe`AV pInfo.FileName = sysFolder & fileName
Rc(q'&T$l pInfo.UseShellExecute = True
tGmy|l-f 启动应用程序
lW:6};i) 本示例打开一个名为 Eula.txt 的文件。该文件是使用与 .txt 文件扩展名关联的应用程序打开的,通常是 Notepad.exe。可以替换任何有关联应用程序的文件名或类型。
*1<5Cm?zm Dim p As Process = Process.Start(pInfo)
,RGC; qT 用于启动应用程序的快捷方式
yJURF9 因为对进程而言 UseShellExecute 默认为 True,所以启动进程时不需要使用 ProcessStartInfo。 可以使用一行代码启动关联的应用程序(如下所示):
wSX4f4+3D Dim p As Process = Process.Start("c:\winnt\system32\eula.txt")
e;uZ$v~r 完整代码示例
Z_M`\? 'How to Start a Process with a File Name
\:n~3w 'Specify a file.
<k"qENhP Dim fileName as String = "\eula.txt"
;^ v|5 'Get the name of the system folder.
3uS?fu]8"t $}: yHT Dim sysFolder As String = _
0c]`d.r Environment.GetFolderPath(Environment.SpecialFolder.System)
U>S<KM8[^ 'Create a new ProcessStartInfo structure.
VHVA1NU} Dim pInfo As New ProcessStartInfo()
(2AJ*Ib2 'Set the file name member of pinfo to Eula.txt in the system folder.
+k[Oi ^JW pInfo.FileName = sysFolder & fileName
Ra8;UYA 'UseShellExecute is true by default. It is set here for illustration.
+||PmXY# pInfo.UseShellExecute = True
1B!v`kU 'Start the process as specified in the process info structure.
2-= oX" Dim p As Process = Process.Start(pInfo)
|:>mVCp` 疑难解答
+eg"5K8Oz 单台计算机可能没有安装关联的应用程序,或者注册表中的关联可能不正确。 最好将此代码包含在 try...catch 块中,这样,当失败时系统就会对应用程序发出警报
G`mAZE(
查看本文来源