В Windows при двойном клике на фото открывается программа для просмотра фотографий.
Как мне сделать это в своей программе? Чтобы при двойном клике по фото эта фотография отображалась в <Image></Image>
Это многоходовый процесс.
Для начала, вам нужно настроить ассоциации файлов на клиентской машине, чтобы Windows знала, что при «запуске» картинки она должна открываться в вашем приложении. Прочитать, как именно работает механизм ассоциаций файлов (verbs), лучше всего на MSDN:
Теперь, настройка файловых ассоциаций должна происходить от имени администратора и один раз. Это значит, что её место — в инсталляторе вашей программы.
Инсталлятор можно создать при помощи Visual Studio. Для Visual Studio 2017, вам нужно для начала установить расширение Installer Projects через VS Marketplace:
Теперь создаём проект типа «инсталлятор». В нём добавляем ваше приложение для установки в Program Files:
Открываем редактор ассоциаций файлов
и добавляем нашу ассоциацию файлов:
Отлично. Теперь при «запуске» картинки ОС будет вызывать нашу программу (после инсталляции, разумеется!). Нам надо научить программу понимать имя файла, поданное на вход. Как это сделать, прекрасно расписано в соседнем ответе.
Дерзайте!
Можно таким образом:
Перегрузить конструктор public MainWindow()
:
namespace WpfApp2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
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
:
<Application x:Class="WpfApp2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApp2"
Startup="App_Startup">
<Application.Resources>
</Application.Resources>
</Application>
В App.xaml.cs добавить метод App_Startup
:
namespace WpfApp2
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
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();
}
}
}
После этого запускать нужные типы файлов с помощью своей программы.
ЗдравствуйтеВстала задача записывать видео из браузера и передавать на rtmp сервер
JS у них во всех сервисах обфусцирован, поэтому я даже не пытался разобратьсяТак же могут использоваться и какие либо сложные серверные технологии
Нужно построить автомобильный и пешеходный маршруты через google maps по двум точкамЕсть два поля ввода (от и до), и две кнопки (автомобильный маршрут...
Помогите решить проблему с выводом ошибки javascript в gulp при помощи плагинов, которые выводят ошибку в отдельном окне, как notyficationДля less настроил,...