GVKun编程网logo

delphi 打开文件夹并定位到一个文件(delphi 打开文件夹并定位到一个文件夹)

8

最近很多小伙伴都在问delphi打开文件夹并定位到一个文件和delphi打开文件夹并定位到一个文件夹这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展C#打开指定目录并定位到文件、c

最近很多小伙伴都在问delphi 打开文件夹并定位到一个文件delphi 打开文件夹并定位到一个文件夹这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展C# 打开指定目录并定位到文件、c#: 打开文件夹并选中文件、delphi Ctrl+鼠标左键或者Find Declaration不能定位到源文件、delphi – 如何在打开文件对话框中仅显示某些文件扩展名?等相关知识,下面开始了哦!

本文目录一览:

delphi 打开文件夹并定位到一个文件(delphi 打开文件夹并定位到一个文件夹)

delphi 打开文件夹并定位到一个文件(delphi 打开文件夹并定位到一个文件夹)

总结

以上是小编为你收集整理的delphi 打开文件夹并定位到一个文件全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

C# 打开指定目录并定位到文件

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.  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#: 打开文件夹并选中文件

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+鼠标左键或者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了!

 
感谢LZ分享,但XE7中无“Debug source path”
 
 
为何还是没有用
 
有用啊!!
Delphi7上安装cnvcl,我就困惑了很久,如果library path只有dcu路径的话,为什么不能Ctrl+点击找到定义。我在Cnvcl上的Debug source path添加源码位置就行了!!

delphi – 如何在打开文件对话框中仅显示某些文件扩展名?

delphi – 如何在打开文件对话框中仅显示某些文件扩展名?

当我打开一个带有OpenDialog的文件夹时,如何过滤它以便用户只能查看某些文件(例如,Stringgrid,* .sg),而且任何其他扩展名的文件都不会出现在对话框窗口中?

解决方法

将OpenDialog.Filter属性设置为所需的文件筛选器.

您可以在Object Inspector中执行此操作:

>单击Filter属性,您将看到右边缘出现一个小按钮….
>单击它,您将看到一个对话框.

左侧是文件的描述(例如,Excel文件(* .xls)).右侧是您要使用的过滤器,如* .xls.

您还可以在显示对话框之前在代码中设置它:

OpenDialog1.Filter := 'Excel files (*.xls)|*.xls';

当然,将Excel内容替换为您要使用的任何描述和掩码.

今天关于delphi 打开文件夹并定位到一个文件delphi 打开文件夹并定位到一个文件夹的讲解已经结束,谢谢您的阅读,如果想了解更多关于C# 打开指定目录并定位到文件、c#: 打开文件夹并选中文件、delphi Ctrl+鼠标左键或者Find Declaration不能定位到源文件、delphi – 如何在打开文件对话框中仅显示某些文件扩展名?的相关知识,请在本站搜索。

本文标签: