Я хочу показать диалоговое окно, которое позволит пользователю выбрать файл ярлыка (.lnk). Моя проблема в том, что диалоговое окно пытается получить файл/URL, на который указывает ярлык, а не сам файл .lnk.
Как я могу разрешить выбор файлов .lnk?
Я хочу показать диалоговое окно, которое позволит пользователю выбрать файл ярлыка (.lnk). Моя проблема в том, что диалоговое окно пытается получить файл/URL, на который указывает ярлык, а не сам файл .lnk.
Как я могу разрешить выбор файлов .lnk?
Вы можете использовать свойство OpenFileDialog.DereferenceLinks
, чтобы повлиять на это поведение (см. документ).
var dlg = new OpenFileDialog();
dlg.FileName = null;
dlg.DereferenceLinks = false;
if (dlg.ShowDialog() == DialogResult.OK) {
this.label1.Text = dlg.FileName;
}
or
var dlg = new OpenFileDialog();
dlg.FileName = null;
this.openFileDialog1.Filter = "Link (*.lnk)|*.lnk";
if (dlg.ShowDialog() == DialogResult.OK) {
this.label1.Text = dlg.FileName;
Оба метода дают файл .lnk
, однако первый подход позволяет выбрать файлы .lnk
или обычные файлы, а второй только выбирает файлы .lnk
.
Следующий код вернул мне имя файла .lnk
public static string PromptForOpenFilename (Control parent)
{
OpenFileDialog dlg = new OpenFileDialog ();
dlg.Filter = "Link (*.lnk)|*.lnk";
dlg.Multiselect = false;
dlg.FileName = null;
DialogResult res;
if (null != parent)
res = dlg.ShowDialog (parent);
else
res = dlg.ShowDialog ();
if (DialogResult.OK == res)
return dlg.FileName;
return null;
}