原文:http://www.crifan.com/csharp_call_explorer_to_open_destinate_folder_and_select_specific_file/

C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件

折腾:

C#中如何在右下角添加提示窗口,用于显示打开文件和文件夹

的过程中,需要实现,点击对应LinkLabel后,调用资源管理器,打开对应的文件夹。

【解决过程】

1.找了下,参考:

C#打开文件夹

C#用资源管理器打开指定文件夹

去添加代码:

1
2
3
4
5
6
private void lklOpenFolder_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    //open folder
    System.Diagnostics.Process.Start("Explorer.exe","C:\\");
    //System.Diagnostics.Process.Start("Explorer.exe", txbSaveTo.Text);
}

运行一下,试试效果,发现是可以调用资源管理器打开文件夹的:

【总结】

C#中,调用资源管理器打开特定文件夹,其实和之前使用IE打开对应的网站链接,效果是类似的,都是使用的是System.Diagnostics.Process.Start

去打开一个东西的。

对应的,就想起来了,再去试试,不指定使用Explorer的话,是不是也还是和之前一样,可以自动检测,使用默认程序打开的:

1
2
3
4
5
6
7
private void lklOpenFolder_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    //open folder
    //System.Diagnostics.Process.Start("Explorer.exe","C:\\");
    System.Diagnostics.Process.Start("C:\\");
    //System.Diagnostics.Process.Start("Explorer.exe", txbSaveTo.Text);
}

果然,运行结果是一样的,会去找到默认的程序,即Explorer.exe,去打开路径的。

【再总结】

C#中,使用System.Diagnostics.Process.Start可以打开一个东西,

此东西,会根据你传入的参数和指定的程序,实不同的效果:

  • 如果指定了所调用的程序,则会使用该程序,打开该内容
  • 如果没有指定程序,则会寻找系统默认的程序,打开该内容

而对于该内容,目前已经见到过:

  • 如果是路径,比如C:\,则会调用(默认的)资源管理器打开对应的文件夹
  • 如果是网址,比如http://www.crifan.com,那么会调用(默认的)IE浏览器去打开

所以,以后再想要去打开其他东西,则也是按照同样的逻辑去使用System.Diagnostics.Process.Start,即可。


【后记 2012-09-24】

后来又遇到需求是,通过Explorer打开对应文件夹,并选中该文件。

后来找了下,参考:

C#如何打开选中的文件夹并指向选中的文件

然后写代码之前,就去查了下资料:

先去看

System.Diagnostics.Process.Start

的语法:

Process.Start 方法

名称 说明
Process.Start () 启动(或重用)此 Process 组件的 StartInfo 属性指定的进程资源,并将其与该组件关联。

由 .NET Compact Framework 支持。

Process.Start (ProcessStartInfo) 启动由包含进程启动信息(例如,要启动的进程的文件名)的参数指定的进程资源,并将该资源与新的 Process 组件关联。

由 .NET Compact Framework 支持。

Process.Start (String) 通过指定文档或应用程序文件的名称来启动进程资源,并将资源与新的 Process 组件关联。
Process.Start (String, String) 通过指定应用程序的名称和一组命令行参数来启动一个进程资源,并将该资源与新的Process 组件相关联。

由 .NET Compact Framework 支持。

Process.Start (String, String, SecureString, String) 通过指定应用程序的名称、用户名、密码和域来启动一个进程资源,并将该资源与新的Process 组件关联起来。
Process.Start (String, String, String, SecureString, String) 通过指定应用程序的名称、一组命令行参数、用户名、密码和域来启动一个进程资源,并将该资源与新的 Process 组件关联起来。

注意到,此处没有三个参数的,要么是2个参数,要么是4个或5个参数。

所以,也很明显,此函数所要执行的动作,取决于所调用的程序,此处即为Explorer。

所以再去查:

explorer 命令参数及其应用

所以,很清楚,就是通过Explorer的/select加上逗号,加上文件的绝对路径,来实现打开并选中文件的。

所以就去写出代码:

1
System.Diagnostics.Process.Start("Explorer.exe""/select," + curFullFilename); // Note: only 2 para !!!

然后就可以实现对应的效果了:

这个是要选择的文件:

可以实现通过资源管理器打开并选中该文件:

同理,对于想要调用,操作系统的当前的,默认为WMP,播放歌曲类软件,去打开播放歌曲等文件的话,也直接可以通过System.Diagnostics.Process.Start去实现了:

1
2
//open file
System.Diagnostics.Process.Start(curFullFilename);

当打开的是一个mp3文件时,会自动调用当前的,系统中已和mp3文件关联的播放软件,此处是WMP,去播放歌曲了:

【总结】

至此,越加清楚了System.Diagnostics.Process.Start的含义和用法了。

C#中:

    • 打开单个文件(当文件是歌曲时,则会自动调用mp3播放软件去打开):
1
System.Diagnostics.Process.Start(curFullFilename);
  • 调用资源管理(Explorer.exe)打开文件夹:

    • 使用默认程序(一般来说,也都是资源管理器)打开文件夹:

      1
      System.Diagnostics.Process.Start("C:\\");
    • 指定使用资源管理器打开文件夹:
      1
      System.Diagnostics.Process.Start("Explorer.exe","C:\\");
  • 调用资源管理器打开文件夹并选中文件:
    1
    System.Diagnostics.Process.Start("Explorer.exe""/select,"+ curFullFilename);

注意:

打开文件夹并选中文件的实际过程,并非先通过传递文件夹参数去打开文件夹,然后再选择文件,

而是,直接通过传入文件的绝对路径,打开文件同时并选中文件的。

所以参数只需要

/select,fullFilePath

即可,而不需要两个参数。

[转]C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件的更多相关文章

  1. [置顶] LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句

    LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句 declare @sql varchar(4000), @dirpath varch ...

  2. Ubuntu中的“资源管理器”System Monitor

    我们在Windows中经常要查看“资源管理器”来了解系统运行情况,对进程进行操作等等... 在Windows桌面任务栏右键“启动任务管理器”: 学习Linux,自然也希望有类似的“资源管理器”,安装完 ...

  3. win10中显示资源管理器扩展

    一年前从有两台机器win7升级到win10,一台上装了我常用的资源管理器扩展setExBar,但另一台没有.升级后原来有插件的依然默认显示插件,我在另一台机器上安装了setExBar时默认不显示.如果 ...

  4. VC在windows中打开文件夹并选中文件

    网上一位前辈高人的一段精髓代码让我眼前一亮…… ShellExecute(NULL, "open", "explorer.exe", "/select ...

  5. 更改win7资源管理器启动位置

    打开资源管理器属性,在目标(T)后边加上: /e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D} 俺滴笨笨原本目标(T)是: %windir%\explorer.ex ...

  6. explorer.exe中发生未处理的win32异常

    explorer.exe中发生未处理的win32异常的错误提示,是windows系统比较常见的错误事件,多数在开机遇到,也有在电脑使用过程中遇到. 了解explorer.exe进程 从百度百科了解到, ...

  7. explorer.exe进程简单介绍

    explorer.exe是Windows程序管理器或者Windows资源管理器,它用于管理Windows图形壳,包括开始菜单.任务栏.桌面和文件管理.不过也发现有大量的恶意病毒木马插入到explore ...

  8. 更新win7资源管理器

    更新exeplorer.exe: 1.方法1: void RefreshExplorer() { ]; SHELLEXECUTEINFOA shellExeInfo={}; shellExeInfo. ...

  9. Hadoop 三剑客之 —— 集群资源管理器 YARN

    一.hadoop yarn 简介 二.YARN架构         1. ResourceManager         2. NodeManager         3. ApplicationMa ...

随机推荐

  1. NeuSoft(1)构建嵌入式交叉编译环境

    操作系统版本:ubuntu 12.04 内核名称:Linux 内核发行版:3.2.0-generic 内核版本:#50-Ubuntu SMP Mon Sep 12 21:18:14 UTC 2011 ...

  2. 笔记本(WIN7|XP)发射wifi信号 当无线路由使用

    Windows7系统 第一步:是你的电脑上要有两个网卡一个有线一个无线(笔记本应该都有)台式机可以考虑买个USB无线网卡(50左右) 第二步:win+R  CMD  输入(只输入红色部分) netsh ...

  3. HTTP Error 403没有了,但是中文全都是乱码。又是怎么回事?

    首先是简单的网页抓取程序: [python] import sys, urllib2req = urllib2.Request("http://blog.csdn.net/nevasun&q ...

  4. Python开发问题和解决方案汇集

    1.Sublime Text中用Tab批量替换空格Whitespace缩进:Ctrl+A全选代码,Ctrl+Shift+P打开下拉框,输入indent,找到Convert indentation to ...

  5. EmguCV 轮廓分析函数汇总

    一.cvApproxPoly 使用多边形逼近一个轮廓,使得顶点数目变少.算法先从轮廓选择2个最远的点,然后将2个连成一个线段,然后再查找轮廓上到线段距离最远的点,添加到逼近后的新轮廓.算法反复迭代,不 ...

  6. Mongo中append方法使用

    在MongoDB的官网已经很详细的介绍了各种客户端的使用,其中也包括java的,在此,仅对几个比较疑惑的地方做个标注: (1).如何向db中添加collection? 如果在api文档中找不到答案,那 ...

  7. php的字符串处理函数

    Strpos($str,”img”); //返回字符串的位置 Substr($str,int start,int length); 使用这两个函数可以截取字符串

  8. Session 知识点再整理(一)基本概念和原理

    Session 的概念 Session 和 Cookie 一样,也是针对 HTTP 的局限性而提出的一种保持客户端和服务器端会话连接状态的机制. Session 被称为会话,指用户在进入网站到浏览器关 ...

  9. 奥迪--A6L

    -型号:A6L -价格:42-75W -动力:1.8T/2.5L/3T -变速箱:7挡双离合/CVT无级变速/7挡双离合 -长宽高:5.04,1.87,1.47 -油箱:75L -发动机:EA888 ...

  10. github展示项目

    首先在原repo中创建一个gh-pages分支,然后把你master分支的东西都搬过来,将这个gh-pages作为你的HEAD主分支.如果想删掉master分支,需要在repo的settings中修改 ...