.net - 用于执行外部应用程序的 Shell 与 Process.start

标签 .net vb.net windows shell process

我可以通过以下方式从我的应用程序中打开 Windows 计算器:

  • 使用 Shell()

    Shell("C:\WINDOWS\system32\calc.exe") 
    
  • 使用 Process.start()

    Process.start("C:\WINDOWS\system32\calc.exe")  
    
  • 打开记事本应用

    Shell("C:\WINDOWS\system32\notepad.exe", AppWinStyle.NormalFocus)  
    Process.start("C:\WINDOWS\system32\notepad.exe", AppWinStyle.NormalFocus)
    

谁能告诉我这两个调用有什么区别?哪个是最佳实践?

最佳答案

在这两个例子中本质上没有区别但是

Process.Start 是首选,因为它为您提供了更多控制流程的选项。您可以使用 ProcessStartInfo 指定更多选项对象作为参数。

Shell 仅返回您必须在运行进程列表中查找的进程 ID,而 Process.Start 返回一个 Process可用于检查其状态等的对象。

另请注意,Shell 位于 Microsoft.VisualBasic 命名空间中,主要包含用于遗留用途的弃用方法。您应该尽量避免在此处使用任何内容,而应使用另一个命名空间中的替代项。

关于.net - 用于执行外部应用程序的 Shell 与 Process.start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26038052/

相关文章:

Java以管理员身份打开另一个应用程序

c# - 从数据类型下拉列表中获取值 (Umbraco)

python - 从命令行运行 Python 脚本会在默认文本编辑器中打开脚本而不是执行脚本

c# - 调用结果对等待任务的影响

c# - TabControl 中所有 TabItem 的内容相同

WPF MVVM 取消注册处理程序

vb.net - Linq 中的 LIKE 到 SQL

node.js - 从 Electron 应用程序打开 Windows 日期时间设置

c# - 如何在 C# 中匹配两个列表的项目?

c# - 如何知道RichTextBox垂直Scrollbar是否达到最大值?