Process.Start 打开资源管理器

Posted

技术标签:

【中文标题】Process.Start 打开资源管理器【英文标题】:Process.Start opening explorer 【发布时间】:2021-01-11 05:13:19 【问题描述】:

我正在使用 c# 开发一个简单的 WPF 图像查看器。我正在添加一项功能,因此您可以右键单击图像以打开文件路径。我正在使用Process.Start 以路径作为参数打开资源管理器。我的应用运行良好,但无法打开资源管理器。

我的c#代码是

        string selectedFileName;
        string directoryPath;

        private void MenuItemFromFile_OnClick(object sender, RoutedEventArgs e)
        
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Image Files (*.jpg|*.jpg|*.gif|*.ico|*.bmp|*.png|*.wdp| .tiff)|All files (*.*)|*.*";
            openFileDialog.FilterIndex = 8;


            
            if (openFileDialog.ShowDialog() == true)
            
                selectedFileName = openFileDialog.FileName;
                directoryPath = System.IO.Path.GetDirectoryName(openFileDialog.FileName);
                
                BitmapImage bitmap = new BitmapImage();  
                bitmap.BeginInit();
                bitmap.UriSource = new Uri(selectedFileName);  
                bitmap.EndInit();
                FullImage.Source = bitmap;
            
        

        private void ContextItemFileLocation_OnClick(object sender, RoutedEventArgs e)
        

            Process.Start("C:\\Windows\\explorer.exe", @directoryPath);
        

我的 XAML

        <Image Grid.Row="2" 
               Grid.Column="1" 
               Name = "FullImage" 
               Stretch="Uniform" 
               StretchDirection="Both" >
            <Image.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="open file location" 
                              Name="ContextItemFileLocation" 
                              Click="ContextItemFileLocation_OnClick"/>
                </ContextMenu>
            </Image.ContextMenu>
            
        </Image>

【问题讨论】:

您能描述一下单击ContextItem 时究竟发生了什么吗?它是有线的,因为我已经测试了代码并且它对我来说工作正常。在运行Process.Start() 之前,您是否尝试过调试以检查directoryPath 的值? 目录路径是调试时应该是的,当我点击上下文菜单时,它关闭了,没有任何反应 您确定在尝试打开图像位置之前先选择了图像吗?请在Process.Start() 之前放置一个BreakPoint 并调试以检查directoryPath 的值,甚至是否调用了事件处理程序ContextItemFileLocation_OnClick 【参考方案1】:

我重新启动了我的电脑,它现在似乎可以工作了。无论如何感谢您的帮助

【讨论】:

以上是关于Process.Start 打开资源管理器的主要内容,如果未能解决你的问题,请参考以下文章

打开资源管理器窗口并等待它关闭

在资源管理器中打开文件夹并选择文件

链接到设备管理器

使用 Process.Start() 访问 ssh

Process.Start可能无法选中指定文件的问题

C# - 在任务管理器中打开应用程序作为第二个进程