最近很多小伙伴都在问delphi打开文件夹并定位到一个文件和delphi打开文件夹并定位到一个文件夹这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展C#打开指定目录并定位到文件、c
最近很多小伙伴都在问delphi 打开文件夹并定位到一个文件和delphi 打开文件夹并定位到一个文件夹这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展C# 打开指定目录并定位到文件、c#: 打开文件夹并选中文件、delphi Ctrl+鼠标左键或者Find Declaration不能定位到源文件、delphi – 如何在打开文件对话框中仅显示某些文件扩展名?等相关知识,下面开始了哦!
本文目录一览:- delphi 打开文件夹并定位到一个文件(delphi 打开文件夹并定位到一个文件夹)
- C# 打开指定目录并定位到文件
- c#: 打开文件夹并选中文件
- delphi Ctrl+鼠标左键或者Find Declaration不能定位到源文件
- delphi – 如何在打开文件对话框中仅显示某些文件扩展名?
delphi 打开文件夹并定位到一个文件(delphi 打开文件夹并定位到一个文件夹)
总结
以上是小编为你收集整理的delphi 打开文件夹并定位到一个文件全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
C# 打开指定目录并定位到文件
1.
打开文件夹:
System.Diagnostics.Process.Start(FilePath);
打开文件夹中某个文件:
System.Diagnostics.Process.Start(FilePath+"/"+FileName);
打开文件夹并选中单个文件:
System.Diagnostics.Process.Start("Explorer", "/select,"+ FilePath+"\\"+FileName);
或
System.Diagnostics.Process.Start("Explorer.exe", "/select,"+ FilePath+"\\"+FileName);
用IE打开文件:
System.Diagnostics.Process.Start("Explorer",FilePath+"\\"+FileName);
或
System.Diagnostics.Process.Start("Explorer.exe",FilePath+"\\"+FileName);
注:(explorer,explorer.exe,select,不区分大小写,”/selecet,”其中”/,”都不能少,FilePath为文件路径不包含文件名)
扩展提示:可以采用 Application.StartupPath 获得应用程序所在的目录。
2.
C# 实现:
-
1 2 private void OpenFolderAndSelectFile(String fileFullName) 3 4 { 5 6 System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("Explorer.exe"); 7 8 psi.Arguments = "/e,/select," + fileFullName; 9 10 System.Diagnostics.Process.Start(psi); 11 12 }
参考:
Windows 资源管理器参数的用法。
Explorer /n
此命令使用默认设置打开一个资源管理器窗口。显示的内容通常是安装 Windows 的驱动器的根目录。
Explorer /e
此命令使用默认视图启动 Windows 资源管理器。
Explorer /e,C:\Windows
此命令使用默认视图启动 Windows 资源管理器,并把焦点定位在 C:\Windows。
Explorer /root, C:\Windows\Cursors
此命令启动 Windows 资源管理器后焦点定位在 C:\Windows\Cursors folder。此示例使用 C:\Windows\Cursors 作为 Windows 资源管理器的“根”目录。
备注:请注意命令中“/root”参数后面的逗号。
Explorer /select, C:\Windows\Cursors\banana.ani
此命令启动 Windows 资源管理器后选定“C:\Windows\Cursors\banana.ani”文件。
备注:请注意命令中“/select”参数后面的逗号。
Windows 资源管理器参数可以在一个命令中进行组合。以下示例显示了 Windows 资源管理器命令行参数的组合。
Explorer /root, \\server\share, select, Program.exe
此命令启动 Windows 资源管理器时以远程共享作为“根”文件夹,而且 Program.exe 文件将被选中。
回到顶端
更改 Windows 资源管理器默认启动文件夹
若要更改 Windows 资源管理器的默认启动文件夹,请:
单击开始,指向所有程序,指向附件,然后右键单击Windows Explorer。
在出现的菜单上,单击属性。
在“目标”框中,将“/root”命令行参数附加到“%SystemRoot%\Explorer.exe”命令之后,并使用您希望的启动位置。例如,如果您希望 Windows 资源管理器启动后定位在 C 驱动器的根,则请将该命令编辑为:
%SystemRoot%\Explorer.exe /root, C:\
c#: 打开文件夹并选中文件
一、常规方法
给定一个文件路径,打开文件夹并定位到文件,通常所用shell命令为:explorer.exe /select,filepath。
c#以进程启动之为:
if (File.Exists(fileName))
{
Process.Start("explorer", "/select,\"" + fileName + "\"");
}
此命令对于一般文件名是适用的,是最为简便的方法。
但项目中碰到特殊文件名,explorer.exe就不认了,它找不到,它默认跳到我的文档目录。
比如下列文件名:
它在c#代码中,unicode字符实为:
而在命令行窗口中,以explorer /select,执行之,则又如下:
结果它自然是找不到的,所以它打开了我的文档目录。
二、SHOpenFolderAndSelectItems API
万能的stackoverflow!
这个纯粹技术的网站,从上受益良多。曾在上面扯过淡,立马被警告,从此收敛正容。
蛛丝蚂迹,找到了SHOpenFolderAndSelectItems这个API,解决问题:
/// <summary>
/// 打开路径并定位文件...对于@"h:\Bleacher Report - Hardaway with the safe call ??.mp4"这样的,explorer.exe /select,d:xxx不认,用API整它
/// </summary>
/// <param name="filePath">文件绝对路径</param>
[DllImport("shell32.dll", ExactSpelling = true)]
private static extern void ILFree(IntPtr pidlList);
[DllImport("shell32.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
private static extern IntPtr ILCreateFromPathW(string pszPath);
[DllImport("shell32.dll", ExactSpelling = true)]
private static extern int SHOpenFolderAndSelectItems(IntPtr pidlList, uint cild, IntPtr children, uint dwFlags);
public static void ExplorerFile(string filePath)
{
if (!File.Exists(filePath) && !Directory.Exists(filePath))
return;
if (Directory.Exists(filePath))
Process.Start(@"explorer.exe", "/select,\"" + filePath + "\"");
else
{
IntPtr pidlList = ILCreateFromPathW(filePath);
if (pidlList != IntPtr.Zero)
{
try
{
Marshal.ThrowExceptionForHR(SHOpenFolderAndSelectItems(pidlList, 0, IntPtr.Zero, 0));
}
finally
{
ILFree(pidlList);
}
}
}
}
试用一下:
非常完美。而且如果其目录已打开,它会已打开的目录中选择而不会新开文件夹,更人性化。
delphi Ctrl+鼠标左键或者Find Declaration不能定位到源文件
在Delphi代码编辑器中使用Ctrl+鼠标左键可跳转到鼠标下的类所在的定义处,但今天发现一个奇怪的问题,EhLib组件的类无法跳转(包括uses中的pas文件),重新安装也是如此,后来经过验证,发现有些组件可跳转,有些则不可,比如EhLib、ReportMachine不可,但FastReport和有些组件却可以,在Delphi IDE中查看半天,也百思不得其解,希望有知情者高手指教!
Library Path我早已加上,用的所有组件都是有源码的,可以打开查看,组件本身可以正常使用。
一般跳转不了先“build all”,如果能顺利编译一般可以跳转的 ...
今天也遇到这个问题,就连包单元内相互引用的单元也不能Find Declaration;刚好这个第三方控件是属于一个ProjectGroup1, 所以就可以"Build All Projects".最后跳转功能确实实现了.但是保存时发现:工程.dof,工程.cfg,工程.res都是只读的.不知是不是由于这个原因造成的.
-------------------------------------------------------------------
最近也碰到一个这样的问题。
后来自己研究了一下。这样操作一下就可以了:
Project Options对话框的"Directories/Conditionals”
把“Debug source path”字段的内容设置成“Output directory”字段的内容一样就可以Find Declaration了!
Delphi7上安装cnvcl,我就困惑了很久,如果library path只有dcu路径的话,为什么不能Ctrl+点击找到定义。我在Cnvcl上的Debug source path添加源码位置就行了!!
delphi – 如何在打开文件对话框中仅显示某些文件扩展名?
解决方法
您可以在Object Inspector中执行此操作:
>单击Filter属性,您将看到右边缘出现一个小按钮….
>单击它,您将看到一个对话框.
左侧是文件的描述(例如,Excel文件(* .xls)).右侧是您要使用的过滤器,如* .xls.
您还可以在显示对话框之前在代码中设置它:
OpenDialog1.Filter := 'Excel files (*.xls)|*.xls';
当然,将Excel内容替换为您要使用的任何描述和掩码.
今天关于delphi 打开文件夹并定位到一个文件和delphi 打开文件夹并定位到一个文件夹的讲解已经结束,谢谢您的阅读,如果想了解更多关于C# 打开指定目录并定位到文件、c#: 打开文件夹并选中文件、delphi Ctrl+鼠标左键或者Find Declaration不能定位到源文件、delphi – 如何在打开文件对话框中仅显示某些文件扩展名?的相关知识,请在本站搜索。
本文标签: