如何使用WPF窗口从任何计算机上的桌面文件夹启动应用程序

时间:2018-11-05 18:37:51

标签: c# wpf visual-studio launch

我一直在互联网上搜索有关此问题的某种教程,但我没有找到一个非常明确的说明。 我在Visual Studio中创建了一个具有两个按钮的WPF窗口 按钮One用于启动PDF文件。 按钮二将用于启动.exe应用程序,然后关闭WPF窗口 现在,我发现如果我使用:

System.Diagnostics.Process.Start("C:/Users/mdkgr/Desktop/FolderName/app.exe")

然后它起作用了,但是自然地,当我发布该项目并且人们要在他们的计算机上使用它时,此方法将不起作用,因为毫无疑问,其安装的每台计算机的地址都会不同。 我的问题很简单: 我如何做到这一点,以便它将在安装的任何计算机上启动PDF文件或application.exe? 我见过的Visual Studio教程都没有一个很清楚。

编辑:

我尝试了@bwing的想法,但遇到错误,因此不确定是否正确使用了它?这是我在公共场所中的代码:

`public static void LaunchKOS()
        {
            var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            // Launch Voice Server
            //Process.Start("C:/Users/mdkgr/Desktop/Knight O S Beta01_Data/voice-recognition-server-pc/VoiceServer/bin/Release/KittVoiceServer");

            var combinedPath = Path.Combine(desktopPath, "Knight O S Beta01_Data/voice-recognition-server-pc/VoiceServer/bin/Release/KittVoiceServer");
            Process.Start(combinedPath);

            // Launch Knight O.S. Unity Settings Window
            Process.Start("C:/Users/mdkgr/Desktop/Knight O S Beta01");
            // Close This Window
            Environment.Exit(0);
        }
        public static void LaunchPDF()
        {
            Process.Start("C:/Users/mdkgr/Desktop/Knight O S Beta01_Data/Knight O.S. Features.pdf");
        }`

编辑:

此方法在我的一台计算机上运行良好,但是一旦在HP笔记本电脑上尝试该方法,它只想打开Unity3d应用程序。但是在两台计算机上,文件夹目录完全相同,我可以毫无问题地手动打开每个.exe文件,但是启动器应用程序只想在HP笔记本电脑上打开一个.exe文件。有谁知道为什么会这样?

public static void LaunchKOS()
        {
            

            var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            var desktopPathkos = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            // Launch Voice Server
            var combinedPath = Path.Combine(desktopPath, "Knight O S Beta01_Data/voice-recognition-server-pc/VoiceServer/bin/Release/KittVoiceServer");
            Process.Start(combinedPath);
            // Launch Knight O.S. Unity Settings Window
            var combinedPathkos = Path.Combine(desktopPathkos, "Knight O S Beta01");
            Process.Start(combinedPathkos);

            
            // Close This Window
            Environment.Exit(0);
        }

1 个答案:

答案 0 :(得分:0)

如果文件在桌面上,则可以使用以下方式获取到桌面的路径

var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

如果文件与WPF Window应用程序位于同一文件夹中,则可以使用它来获取该文件夹

var exePath = AppDomain.CurrentDomain.BaseDirectory;

然后,您只需附加文件名并像以前一样拨打电话

var combinedPath = Path.Combine(desktopPath, "app.exe");
Process.Start(combinedPath