[转]C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件
原文:http://www.crifan.com/csharp_call_explorer_to_open_destinate_folder_and_select_specific_file/
C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件
折腾:
的过程中,需要实现,点击对应LinkLabel后,调用资源管理器,打开对应的文件夹。
【解决过程】
1.找了下,参考:
去添加代码:
|
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打开对应文件夹,并选中该文件。
后来找了下,参考:
然后写代码之前,就去查了下资料:
先去看
System.Diagnostics.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的/select加上逗号,加上文件的绝对路径,来实现打开并选中文件的。
所以就去写出代码:
|
1
|
System.Diagnostics.Process.Start("Explorer.exe", "/select," + curFullFilename); // Note: only 2 para !!! |
然后就可以实现对应的效果了:
这个是要选择的文件:

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

同理,对于想要调用,操作系统的当前的,默认为WMP,播放歌曲类软件,去打开播放歌曲等文件的话,也直接可以通过System.Diagnostics.Process.Start去实现了:
|
1
2
|
//open fileSystem.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)打开(播放歌曲等)文件的更多相关文章
- [置顶] LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句
LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句 declare @sql varchar(4000), @dirpath varch ...
- Ubuntu中的“资源管理器”System Monitor
我们在Windows中经常要查看“资源管理器”来了解系统运行情况,对进程进行操作等等... 在Windows桌面任务栏右键“启动任务管理器”: 学习Linux,自然也希望有类似的“资源管理器”,安装完 ...
- win10中显示资源管理器扩展
一年前从有两台机器win7升级到win10,一台上装了我常用的资源管理器扩展setExBar,但另一台没有.升级后原来有插件的依然默认显示插件,我在另一台机器上安装了setExBar时默认不显示.如果 ...
- VC在windows中打开文件夹并选中文件
网上一位前辈高人的一段精髓代码让我眼前一亮…… ShellExecute(NULL, "open", "explorer.exe", "/select ...
- 更改win7资源管理器启动位置
打开资源管理器属性,在目标(T)后边加上: /e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D} 俺滴笨笨原本目标(T)是: %windir%\explorer.ex ...
- explorer.exe中发生未处理的win32异常
explorer.exe中发生未处理的win32异常的错误提示,是windows系统比较常见的错误事件,多数在开机遇到,也有在电脑使用过程中遇到. 了解explorer.exe进程 从百度百科了解到, ...
- explorer.exe进程简单介绍
explorer.exe是Windows程序管理器或者Windows资源管理器,它用于管理Windows图形壳,包括开始菜单.任务栏.桌面和文件管理.不过也发现有大量的恶意病毒木马插入到explore ...
- 更新win7资源管理器
更新exeplorer.exe: 1.方法1: void RefreshExplorer() { ]; SHELLEXECUTEINFOA shellExeInfo={}; shellExeInfo. ...
- Hadoop 三剑客之 —— 集群资源管理器 YARN
一.hadoop yarn 简介 二.YARN架构 1. ResourceManager 2. NodeManager 3. ApplicationMa ...
随机推荐
- Linux服务器中木马(肉鸡)手工清除方法
由于自己也碰到过这种情况,刚好看到这篇文章,先转载过来.的确蛮有用的哦. 首先剧透一下后门木马如下: (当然这是事后平静下来后慢慢搜出来的,那个时候喝着咖啡感觉像个自由人) 木马名称 Linux.Ba ...
- 本内容中发现无效字符。处理资源 'file:///C:/Users/XDJ/Desktop/1111/press.xml' 时出错。第 5 行,位置: 11 <author>ƽ
粘贴到编译器中, 然后在复制出即可.
- 关于JAVA中的String的使用与连接(转)
JAVA中的String连接性能 Java中的String是一个非常特殊的类,使它特殊的一个主要原因是:String是不可变的(immutable). String的不可变性是Ja ...
- myBatis批量查询操作,xml中使用foreach案例
使用场景:有一个订单表,实体类为OrderBase.java,订单有个状态为status值可能为"1,2,3,4,5,6",现在需要查询状态为"2,3,4"的订 ...
- ios-高德、百度后台定位并上传服务器
一.配置高德或百度的后台定位框架和代码(略). 二.配置app不被系统kill,定时获取地理位置信息,并上传服务器(AppDelegate里面). 具体代码: 1. - (void)applicati ...
- loadrunner获取返回值为乱码
找了很多方法,utf-8也设置了,还是不行,只有有转码方法了 web_reg_save_param("res2", "LB=\"msg\":\&quo ...
- CentOS通过日志反查入侵
使用 last -f /var/log/wtmp 来查看可疑ip登录 查看/var/log/secure保存的系统信息 来确定可以ip登录
- TestNG的一个不足之处
PS:本博客selenium分类不会记载selenium打开浏览器,定位元素,操作页面元素,切换到iframe,处理alter.confirm和prompt对话框这些在网上随处可见的信息:本博客此分类 ...
- Android自动化测试工具——monkey简介及入门
记得第二家单位的安卓开发在上线前都用monkey压几个小时,确实也能发现些问题,崩溃率低了些,没测过的确实可以压一压 搜了下资料,monkey确实很简单,发现问题自己搜下是什么问题,别一发现什么就跑去 ...
- JQuery html API支持解析执行Javascript脚本功能实现-代码分析
JQuery html用法(功能类似innerHTML) 开发中需要使用Ajax技术来更新页面局部区域, 使用的方法是ajax获取html代码段(字符串),然后将这个html代码段作为参数,传入目标D ...