Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

“Открыть с помощью” моей программы. Как сделать?

#c_sharp #wpf #net #windows


В Windows при двойном клике на фото открывается программа для просмотра фотографий.
Как мне сделать это в своей программе? Чтобы при двойном клике по фото эта фотография
отображалась в 
    


Ответы

Ответ 1



Это многоходовый процесс. Для начала, вам нужно настроить ассоциации файлов на клиентской машине, чтобы Windows знала, что при «запуске» картинки она должна открываться в вашем приложении. Прочитать, как именно работает механизм ассоциаций файлов (verbs), лучше всего на MSDN: Verbs and File Associations How File Associations Work Теперь, настройка файловых ассоциаций должна происходить от имени администратора и один раз. Это значит, что её место — в инсталляторе вашей программы. Инсталлятор можно создать при помощи Visual Studio. Для Visual Studio 2017, вам нужно для начала установить расширение Installer Projects через VS Marketplace: Теперь создаём проект типа «инсталлятор». В нём добавляем ваше приложение для установки в Program Files: Открываем редактор ассоциаций файлов и добавляем нашу ассоциацию файлов: Отлично. Теперь при «запуске» картинки ОС будет вызывать нашу программу (после инсталляции, разумеется!). Нам надо научить программу понимать имя файла, поданное на вход. Как это сделать, прекрасно расписано в соседнем ответе. Дерзайте!

Ответ 2



Можно таким образом: Перегрузить конструктор public MainWindow(): namespace WpfApp2 { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } public MainWindow(string fileName) { InitializeComponent(); if (!string.IsNullOrWhiteSpace(fileName) && File.Exists(fileName)) { try { image1.Source = new BitmapImage(new Uri(fileName)); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } } В App.xaml добавить StartUp: В App.xaml.cs добавить метод App_Startup: namespace WpfApp2 { /// /// Interaction logic for App.xaml /// public partial class App : Application { void App_Startup(object sender, StartupEventArgs e) { string fileName = e.Args?.FirstOrDefault(); MainWindow mainWindow; if (!string.IsNullOrWhiteSpace(fileName)) mainWindow = new MainWindow(fileName); else mainWindow = new MainWindow(); mainWindow.Show(); } } } После этого запускать нужные типы файлов с помощью своей программы.

Комментариев нет:

Отправить комментарий