Как определить ярлык из файла в операции перетаскивания C #? - PullRequest
0 голосов
/ 09 июля 2010

У меня есть приложение на 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 ]

4 голосов
/ 09 июля 2010

Ярлык Windows - это файл с расширением .lnk.

Не могли бы вы подробнее рассказать о том, что вы надеетесь делать или не делать с ним?

0 голосов
/ 06 марта 2011

Если вам нужно пойти дальше и обработать файлы или папки, на которые ориентирован ярлык, вы можете посмотреть на этот http://www.codeproject.com/KB/dotnet/shelllink.aspx.

В проекте показано, как использовать Windows Scripting Host для управленияярлыки.Например, после создания оболочки, вызываемой во время выполнения (IWshRuntimeLibrary.dll), и добавления ее в свой проект вы можете получить целевые ярлыки, подобные этому ...

string targetPath;
if (System.IO.Path.GetExtension (path) == ".lnk") {
try {
IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell ();
IWshRuntimeLibrary.IWshShortcut ярлык = (IWshsh.Inth.CreateShortcut (path);
targetPath = shortcut.TargetPath;
}
catch {}
}

...