如何在C#拖放操作中从文件中分辨快捷方式?

时间:2010-07-08 20:30:55

标签: c# file drag-and-drop shortcut

我有一个C#.NET 3.5应用程序,我已将DragDrop事件合并到DataGridView上。

#region File Browser - Drag and Drop Ops
private void dataGridView_fileListing_DragDrop(object sender, DragEventArgs e)
{
    string[] fileList = e.Data.GetData(DataFormats.FileDrop) as string[];
    foreach (string fileName in fileList)
    {
       //logic goes here
    }
}

我的问题是,如何区分Windows快捷方式与实际文件?我试过了:

File.exists(fileName)

在IF块中,它可用于过滤掉已拖入的目录,但快捷方式可以通过。无论如何要告诉事件数据传入的数据中的快捷方式,或者在我有名字后查询文件系统?

2 个答案:

答案 0 :(得分:4)

Windows快捷方式是一个文件,扩展名为.lnk。

你能详细说明你希望做什么或不做什么吗?

答案 1 :(得分:0)

如果您需要更进一步处理快捷方式定位的文件或文件夹,您可能需要查看此http://www.codeproject.com/KB/dotnet/shelllink.aspx

该项目显示了如何使用Windows Scripting Host来操作快捷方式。例如,在创建运行时可调用包装器(IWshRuntimeLibrary.dll)并将其添加到项目后,您可以获得这样的快捷方式的目标...

string targetPath;
if(System.IO.Path.GetExtension(path)==“。lnk”){
尝试{
IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();
IWshRuntimeLibrary.IWshShortcut shortcut =(IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(path);
targetPath = shortcut.TargetPath;
}
赶上{}
}