【问题标题】:(How to) Use Windows file explorer to find an application?(如何)使用 Windows 文件资源管理器查找应用程序?
【发布时间】:2016-05-31 13:34:11
【问题描述】:

我想以编程方式打开一个应用程序。

首先我使用System.Diagnostics.Process.Start(@"C:\Program Files (x86)\Program1.exe") 工作正常,但应用程序始终需要在同一路径上(并非总是如此,因为不同的计算机)

找到它的一种简单方法(使用鼠标和单击,虽然不是通过编程方式)是使用 Windows 文件资源管理器,我输入我的应用程序的标题,我会立即找到它。

我想编写代码。

我以为我可以使用键盘快捷键“Home + F”并用SendKeys.Send("blabla" 模拟这个词)但是“Home 键”似乎在 c# 中不存在(至少这里不存在https://msdn.microsoft.com/fr-fr/library/ms127847(v=vs.110).aspx

这是一个儿童小程序,我不能指望他们手动找到路径(所以忘记OpenFileDialog..)

也许这是一个非常糟糕的主意,还有另一种解决方案可以在不知道他的路径的情况下找到一个程序,我不知道你有更好的主意吗?!

【问题讨论】:

  • 不用自动化 Windows 文件资源管理器,只需使用内置的 C# 方法来查找文件:stackoverflow.com/q/1225294/87698
  • 几乎可以正常工作,但让我的电脑死机......就像很多一样。
  • 您可以使用 Heinzi 的解决方案。 WITH application.config 在其中写入路径。所以第一次显示加载对话框。之后,您只需从 application.config 文件中读取
  • 它只是带有或不带有“(x86)”的“程序文件”(取决于 32 位或 64 位操作系统 + 应用程序),还是可以在任何地方安装“Program1.exe”?
  • 这就是问题所在,它可以在任何地方......它是通过USB密钥安装的......

标签: c# winforms


【解决方案1】:

您试图以错误的方式解决问题。当程序使用资源管理器运行时,您要“编程”的是 工作目录 的设置。 正确的方法是使用Process.Start,将所有必要的信息传递给它来启动进程:

var startInfo = new ProcessStartInfo("Program1.exe");
startInfo.WorkingDirectory = @"C:\Program Files (x86)\";

Process proc = Process.Start(startInfo);

【讨论】:

  • 我不能使用它可以安装在任何地方!
  • 好的,我误会了 - 您想以编程方式搜索应用程序吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 2019-08-03
  • 1970-01-01
  • 2020-10-29
  • 2014-10-26
  • 2011-04-04
  • 1970-01-01
相关资源
最近更新 更多