Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете использовать AutoPlay для предоставления вашего приложения в качестве параметра при подключении устройства к компьютеру. К ним относятся необъемные устройства, такие как камера или медиаплеер, или объемные устройства, такие как USB-диск, SD-карта или DVD-диск. Вы также можете использовать автозапуск, чтобы предложить своё приложение в качестве варианта, когда пользователи передают файлы между двумя компьютерами при помощи функции касания соседних устройств.
Замечание
Если вы являетесь производителем устройств и хотите связать приложение для устройства из Microsoft Store в качестве обработчика автозапуска для вашего устройства, вы можете идентифицировать это приложение в метаданных устройства. Дополнительные сведения см. в автозапуск для приложений устройств Microsoft Store.
Регистрация на контент Автозапуска
Вы можете зарегистрировать приложения в качестве параметров для событий автозапуска содержимого. события автозапуска содержимого возникают, когда устройство тома, например карточка памяти камеры, флеш-накопитель или DVD-диск, вставляется в компьютер. Здесь показано, как определить приложение как параметр автозапуска при вставке устройства тома с камеры.
В этом руководстве вы создали приложение, которое отображает изображения или копирует их в папку "Изображения". Вы зарегистрировали приложение для события воспроизведения AutoPlay ShowPicturesOnArrival.
Автозапуск также вызывает события содержимого для общего содержимого между компьютерами с помощью близкого взаимодействия (касания). Действия и код в этом разделе можно использовать для обработки файлов, совместно используемых между компьютерами, которые используют близкое взаимодействие. В следующей таблице перечислены события содержимого Автозапуска, доступные для совместного использования содержимого, используя технологию близости.
| Действие | Событие содержимого автозапуска |
|---|---|
| Общий доступ к музыке | ВоспроизвестиМузыкальныеФайлыПоПрибытии |
| Общий доступ к видео | ВоспроизвестиВидеоФайлыПриПрибынии |
Если файлы используются с помощью близкого доступа, свойство Files объекта FileActivatedEventArgs содержит ссылку на корневую папку, содержащую все общие файлы.
Шаг 1: Создайте новый проект и добавьте декларации автозапуска
- Откройте Microsoft Visual Studio и выберите Создать проект в меню "Файл". В разделе Visual C# в разделе Windows выберите пустое приложение UWP (.NET Native). Назовите приложение AutoPlayDisplayOrCopyImages и нажмите кнопку ОК.
- Откройте файл Package.appxmanifest и перейдите на вкладку возможностей. Выберите возможности съемного хранилища и библиотеки изображений. Это дает приложению доступ к съемным устройствам хранилища для памяти камеры и доступ к локальным изображениям.
- В файле манифеста выберите вкладку "Объявления". В раскрывающемся списке "Доступные объявления" выберите "Автозапуск содержимого" и щелкните "Добавить". Выберите новый элемент автозапуска содержимого , добавленный в список поддерживаемых объявлений .
- Объявление автозапуска содержимого определяет приложение в качестве параметра при вызове автозапуска события содержимого. Мероприятие основано на содержимом объемного устройства, например, DVD-диска или флешки. Автозапуск проверяет содержимое томного устройства и определяет, какое событие содержимого необходимо инициировать. Если корневой каталог тома содержит папку DCIM, AVCHD или PRIVATE\ACHD, или если пользователь включил Выбрать, что делать с каждым типом носителей в панели управления Автозапуском и изображения находятся в корне тома, то Автозапуск вызывает событие ShowPicturesOnArrival. В разделе "Действия запуска" введите значения из таблицы 1 ниже для первого действия запуска.
- В разделе "Действия запуска" для элемента автозапуска щелкните "Добавить новый", чтобы добавить второе действие запуска. Введите значения в таблице 2 ниже для второго действия запуска.
- В раскрывающемся списке доступных объявлений выберите Сопоставления типов файлов и щелкните Добавить. В декларации "Свойства новых сопоставлений типов файлов " установите для поля "Отображаемое Имя" значение "AutoPlay Copy или Отображение Изображений", а для поля "Имя" значение image_association1. В разделе поддерживаемых типов файлов щелкните Добавить новое. Установите для поля типа файла значение .jpg. В разделе Поддерживаемые типы файлов задайте для поля тип файла нового сопоставления файлов значение .png. Для событий содержимого AutoPlay отфильтровывает все типы файлов, которые явно не связаны с вашим приложением.
- Сохраните и закройте файл манифеста.
таблица 1
| Настройки | Ценность |
|---|---|
| Глагол | шоу |
| Отображаемое имя действия | Показать рисунки |
| Событие содержимого | ПоказыватьКартинкиПоПрибытии |
Параметр отображаемого имени действия
таблица 2
| Настройки | Ценность |
|---|---|
| Глагол | копия |
| Отображаемое имя действия | Копирование рисунков в библиотеку |
| Событие содержимого | ПоказыватьКартинкиПоПрибытии |
Шаг 2. Добавление пользовательского интерфейса XAML
Откройте файл MainPage.xaml и добавьте следующий XAML-код в сегмент Grid по умолчанию <>.
<TextBlock FontSize="18">File List</TextBlock>
<TextBlock x:Name="FilesBlock" HorizontalAlignment="Left" TextWrapping="Wrap"
VerticalAlignment="Top" Margin="0,20,0,0" Height="280" Width="240" />
<Canvas x:Name="FilesCanvas" HorizontalAlignment="Left" VerticalAlignment="Top"
Margin="260,20,0,0" Height="280" Width="100"/>
Шаг 3. Добавление кода инициализации
Код на этом шаге проверяет значение глагола в свойстве Verb, которое является одним из аргументов запуска, переданных приложению во время события OnFileActivated. Затем код вызывает метод, связанный с выбранным пользователем параметром. Для события памяти камеры автозапуск передает корневую папку хранилища камеры приложению. Эту папку можно извлечь из первого элемента свойства Files.
Откройте файл App.xaml.cs и добавьте следующий код в класс App.
protected override void OnFileActivated(FileActivatedEventArgs args)
{
if (args.Verb == "show")
{
Frame rootFrame = (Frame)Window.Current.Content;
MainPage page = (MainPage)rootFrame.Content;
// Call DisplayImages with root folder from camera storage.
page.DisplayImages((Windows.Storage.StorageFolder)args.Files[0]);
}
if (args.Verb == "copy")
{
Frame rootFrame = (Frame)Window.Current.Content;
MainPage page = (MainPage)rootFrame.Content;
// Call CopyImages with root folder from camera storage.
page.CopyImages((Windows.Storage.StorageFolder)args.Files[0]);
}
base.OnFileActivated(args);
}
Замечание
Методы DisplayImages и CopyImages добавляются на следующих этапах.
Шаг 4. Добавление кода для отображения изображений
В файле MainPage.xaml.cs добавьте следующий код в класс MainPage.
async internal void DisplayImages(Windows.Storage.StorageFolder rootFolder)
{
// Display images from first folder in root\DCIM.
var dcimFolder = await rootFolder.GetFolderAsync("DCIM");
var folderList = await dcimFolder.GetFoldersAsync();
var cameraFolder = folderList[0];
var fileList = await cameraFolder.GetFilesAsync();
for (int i = 0; i < fileList.Count; i++)
{
var file = (Windows.Storage.StorageFile)fileList[i];
WriteMessageText(file.Name + "\n");
DisplayImage(file, i);
}
}
async private void DisplayImage(Windows.Storage.IStorageItem file, int index)
{
try
{
var sFile = (Windows.Storage.StorageFile)file;
Windows.Storage.Streams.IRandomAccessStream imageStream =
await sFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
Windows.UI.Xaml.Media.Imaging.BitmapImage imageBitmap =
new Windows.UI.Xaml.Media.Imaging.BitmapImage();
imageBitmap.SetSource(imageStream);
var element = new Image();
element.Source = imageBitmap;
element.Height = 100;
Thickness margin = new Thickness();
margin.Top = index * 100;
element.Margin = margin;
FilesCanvas.Children.Add(element);
}
catch (Exception e)
{
WriteMessageText(e.Message + "\n");
}
}
// Write a message to MessageBlock on the UI thread.
private Windows.UI.Core.CoreDispatcher messageDispatcher = Window.Current.CoreWindow.Dispatcher;
private async void WriteMessageText(string message, bool overwrite = false)
{
await messageDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
if (overwrite)
FilesBlock.Text = message;
else
FilesBlock.Text += message;
});
}
Шаг 5. Добавление кода для копирования изображений
В файле MainPage.xaml.cs добавьте следующий код в класс MainPage.
async internal void CopyImages(Windows.Storage.StorageFolder rootFolder)
{
// Copy images from first folder in root\DCIM.
var dcimFolder = await rootFolder.GetFolderAsync("DCIM");
var folderList = await dcimFolder.GetFoldersAsync();
var cameraFolder = folderList[0];
var fileList = await cameraFolder.GetFilesAsync();
try
{
var folderName = "Images " + DateTime.Now.ToString("yyyy-MM-dd HHmmss");
Windows.Storage.StorageFolder imageFolder = await
Windows.Storage.KnownFolders.PicturesLibrary.CreateFolderAsync(folderName);
foreach (Windows.Storage.IStorageItem file in fileList)
{
CopyImage(file, imageFolder);
}
}
catch (Exception e)
{
WriteMessageText("Failed to copy images.\n" + e.Message + "\n");
}
}
async internal void CopyImage(Windows.Storage.IStorageItem file,
Windows.Storage.StorageFolder imageFolder)
{
try
{
Windows.Storage.StorageFile sFile = (Windows.Storage.StorageFile)file;
await sFile.CopyAsync(imageFolder, sFile.Name);
WriteMessageText(sFile.Name + " copied.\n");
}
catch (Exception e)
{
WriteMessageText("Failed to copy file.\n" + e.Message + "\n");
}
}
Шаг 6. Создание и запуск приложения
- Нажмите клавишу F5, чтобы создать и развернуть приложение (в режиме отладки).
- Чтобы запустить приложение, вставьте карту памяти камеры или другое устройство хранения с камеры на компьютер. Затем выберите один из вариантов событий содержимого, который вы указали в файле package.appxmanifest, из списка параметров автозапуска. Этот пример кода отображает только изображения или копирует изображения в папке DCIM карты памяти камеры. Если карта памяти камеры хранит изображения в папке AVCHD или PRIVATE\ACHD, необходимо соответствующим образом обновить код.
Замечание
Если у вас нет карты памяти камеры, можно использовать флэш-диск, если у него есть папка с именем DCIM в корневой папке, а если в папке DCIM есть вложенная папка, содержащая изображения.
Зарегистрируйтесь для устройства AutoPlay
Вы можете зарегистрировать приложения в качестве параметров для событий автозапуска устройства. События автозапуска устройства инициируются при подключении устройства к ПК.
Здесь показано, как определить приложение как параметр AutoPlay при подключении камеры к компьютеру. Приложение регистрируется в качестве обработчика для события WPD\ImageSourceAutoPlay. Это обычное событие, которое система Windows Portable Device (WPD) вызывает, когда камеры и другие устройства создания изображений уведомляют его о том, что они являются ImageSource с помощью MTP. Для получения дополнительной информации см. в разделе Переносимые устройства Windows.
Важно API Windows.Devices.Portable.StorageDevice являются частью семейства устройств настольных систем. Приложения могут использовать эти API только на устройствах Windows 10 в семействе классических устройств, таких как компьютеры.
Шаг 1. Создайте еще один новый проект и добавьте объявления AutoPlay
- Откройте Visual Studio и выберите Новый проект в меню «Файл». В разделе Visual C# в разделе Windows выберите пустое приложение UWP (.NET Native). Назовите приложение AutoPlayDevice_Camera и нажмите кнопку ОК.
- Откройте файл Package.appxmanifest и перейдите на вкладку возможностей. Выберите возможность съемных носителей. Это дает приложению доступ к данным на камере как к устройству с объемом съемного носителя.
- В файле манифеста выберите вкладку "Объявления ". В раскрывающемся списке доступных объявлений выберитеавтозапуск устройства и нажмите кнопку Добавить. Выберите новый элемент устройства автозапуска (AutoPlay) , добавленный в список поддерживаемых объявлений.
- Декларация устройства автозапуска определяет приложение как вариант, когда автозапуск вызывает событие устройства для известных событий. В разделе "Действия запуска" введите значения в таблице ниже для первого действия запуска.
- В раскрывающемся списке доступных объявлений выберите Сопоставления типов файлов и щелкните Добавить. В разделе "Свойства" нового объявления сопоставления типов файлов
задайте для поля отображаемое имя показать изображения из камеры и полеИмя значениеcamera_association1 . В разделе Поддерживаемые типы файлов щелкните Добавить новый (при необходимости). Установите для поля типа файла значение .jpg. В разделе Поддерживаемые типы файлов снова щелкните Добавить новый. Задайте поле для типа файла в новом сопоставлении файлов .png. Для событий содержимого AutoPlay отфильтровывает все типы файлов, которые явно не связаны с вашим приложением. - Сохраните и закройте файл манифеста.
| Настройки | Ценность |
|---|---|
| Глагол | шоу |
| Отображаемое имя действия | Показать рисунки |
| Событие содержимого | WPD\Источник изображения |
Параметр отображаемого имени действия
Шаг 2. Добавление ссылки на сборку для расширений настольных компьютеров
API- интерфейсы, необходимые для доступа к хранилищу на переносном устройстве Windows, Windows.Devices.Portable.StorageDevice, являются частью семейства классических устройств. Это означает, что для использования API требуется специальная сборка, и эти вызовы будут работать только на устройстве в семействе классических устройств (например, на компьютере).
- В Обозревателе решенийщелкните правой кнопкой мыши на Ссылки, а затем выберите Добавить ссылку....
- Расширьте Universal Windows и щелкните Расширения.
- Затем выберите расширения рабочего стола Windows для UWP и нажмите ОК.
Шаг 3. Добавление пользовательского интерфейса XAML
Откройте файл MainPage.xaml и добавьте следующий XAML-код в сегмент Grid по умолчанию <>.
<StackPanel Orientation="Vertical" Margin="10,0,-10,0">
<TextBlock FontSize="24">Device Information</TextBlock>
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="DeviceInfoTextBlock" FontSize="18" Height="400" Width="400" VerticalAlignment="Top" />
<ListView x:Name="ImagesList" HorizontalAlignment="Left" Height="400" VerticalAlignment="Top" Width="400">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<Image Source="{Binding Path=Source}" />
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" ItemHeight="100" ItemWidth="120"></WrapGrid>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</StackPanel>
</StackPanel>
Шаг 4. Добавление кода активации
Код на этом шаге ссылается на камеру как StorageDevice путем передачи идентификатора сведений об устройстве камеры в метод FromId. Идентификатор информации об устройстве камеры получается путём приведения аргументов события в виде DeviceActivatedEventArgs, а затем получения значения из свойства DeviceInformationId.
Откройте файл App.xaml.cs и добавьте следующий код в класс App.
protected override void OnActivated(IActivatedEventArgs args)
{
if (args.Kind == ActivationKind.Device)
{
Frame rootFrame = null;
// Ensure that the current page exists and is activated
if (Window.Current.Content == null)
{
rootFrame = new Frame();
rootFrame.Navigate(typeof(MainPage));
Window.Current.Content = rootFrame;
}
else
{
rootFrame = Window.Current.Content as Frame;
}
Window.Current.Activate();
// Make sure the necessary APIs are present on the device
bool storageDeviceAPIPresent =
Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Devices.Portable.StorageDevice");
if (storageDeviceAPIPresent)
{
// Reference the current page as type MainPage
var mPage = rootFrame.Content as MainPage;
// Cast the activated event args as DeviceActivatedEventArgs and show images
var deviceArgs = args as DeviceActivatedEventArgs;
if (deviceArgs != null)
{
mPage.ShowImages(Windows.Devices.Portable.StorageDevice.FromId(deviceArgs.DeviceInformationId));
}
}
else
{
// Handle case where APIs are not present (when the device is not part of the desktop device family)
}
}
base.OnActivated(args);
}
Замечание
Метод ShowImages добавляется на следующем шаге.
Шаг 5. Добавление кода для отображения сведений об устройстве
Вы можете получить сведения о камере из свойств класса StorageDevice. Код на этом шаге отображает имя устройства и другие сведения пользователю при запуске приложения. Затем код вызывает методы GetImageList и GetThumbnail, которые будут добавлены на следующем шаге, чтобы отобразить эскизы изображений, хранящихся на камере.
В файле MainPage.xaml.cs добавьте следующий код в класс MainPage.
private Windows.Storage.StorageFolder rootFolder;
internal async void ShowImages(Windows.Storage.StorageFolder folder)
{
DeviceInfoTextBlock.Text = "Display Name = " + folder.DisplayName + "\n";
DeviceInfoTextBlock.Text += "Display Type = " + folder.DisplayType + "\n";
DeviceInfoTextBlock.Text += "FolderRelativeId = " + folder.FolderRelativeId + "\n";
// Reference first folder of the device as the root
rootFolder = (await folder.GetFoldersAsync())[0];
var imageList = await GetImageList(rootFolder);
foreach (Windows.Storage.StorageFile img in imageList)
{
ImagesList.Items.Add(await GetThumbnail(img));
}
}
Замечание
Методы GetImageList и GetThumbnail добавляются на следующем шаге.
Шаг 6. Добавление кода для отображения изображений
Код на этом шаге отображает эскизы изображений, хранящихся на камере. Код выполняет асинхронные вызовы к камере, чтобы получить изображение эскиза. Однако следующий асинхронный вызов не происходит до завершения предыдущего асинхронного вызова. Это гарантирует, что в камеру выполняется только один запрос одновременно.
В файле MainPage.xaml.cs добавьте следующий код в класс MainPage.
async private System.Threading.Tasks.Task<List<Windows.Storage.StorageFile>> GetImageList(Windows.Storage.StorageFolder folder)
{
var result = await folder.GetFilesAsync();
var subFolders = await folder.GetFoldersAsync();
foreach (Windows.Storage.StorageFolder f in subFolders)
result = result.Union(await GetImageList(f)).ToList();
return (from f in result orderby f.Name select f).ToList();
}
async private System.Threading.Tasks.Task<Image> GetThumbnail(Windows.Storage.StorageFile img)
{
// Get the thumbnail to display
var thumbnail = await img.GetThumbnailAsync(Windows.Storage.FileProperties.ThumbnailMode.SingleItem,
100,
Windows.Storage.FileProperties.ThumbnailOptions.UseCurrentScale);
// Create a XAML Image object bind to on the display page
var result = new Image();
result.Height = thumbnail.OriginalHeight;
result.Width = thumbnail.OriginalWidth;
result.Name = img.Name;
var imageBitmap = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
imageBitmap.SetSource(thumbnail);
result.Source = imageBitmap;
return result;
}
Шаг 7. Создание и запуск приложения
- Нажмите клавишу F5, чтобы создать и развернуть приложение (в режиме отладки).
- Чтобы запустить приложение, подключите камеру к компьютеру. Затем выберите приложение из списка параметров автозапуска.
Замечание
Не все камеры объявляют о событии autoPlay устройства WPD\ImageSource.
Настройка съемных носителей
Вы можете определить накопитель, например, карту памяти или флешку, как устройство автозапуска, когда накопитель подключен к компьютеру. Это особенно полезно, если вы хотите связать определенное приложение для функции Автовоспроизведения, чтобы предоставить пользователю для вашего устройства воспроизведения.
Здесь мы покажем, как определить устройство тома как устройство автозапуска.
Чтобы определить устройство носителя как устройство автозапуска, добавьте файл autorun.inf в корневой каталог устройства. В файле autorun.inf добавьте ключ CustomEvent в раздел AutoRun. Когда устройство тома подключается к компьютеру, AutoPlay найдет файл autorun.inf и будет рассматривать том как устройство. Автозапуск создаст событие Автозапуск с помощью имени, предоставленного для ключа CustomEvent. Затем можно создать приложение и зарегистрировать приложение в качестве обработчика для этого события автоза пуска. Когда устройство подключено к компьютеру, AutoPlay отобразит ваше приложение в качестве обработчика для устройства накопителя. Дополнительные сведения о файлах autorun.inf см. в разделах autorun.inf.
Шаг 1. Создание файла autorun.inf
На корневом диске устройства тома добавьте файл с именем autorun.inf. Откройте файл autorun.inf и добавьте следующий текст.
[AutoRun]
CustomEvent=AutoPlayCustomEventQuickstart
Шаг 2: Создайте новый проект и добавьте декларации автозапуска
Откройте Visual Studio и выберите Новый проект в меню «Файл». В разделе Visual C# в разделе Windows выберите пустое приложение UWP (.NET Native). Назовите приложение AutoPlayCustomEvent и нажмите кнопку ОК.
Откройте файл Package.appxmanifest и перейдите на вкладку возможностей. Выберите возможность съемных носителей. Это дает приложению доступ к файлам и папкам на съемных устройствах хранения.
В файле манифеста выберите вкладку "Объявления". В раскрывающемся списке "Доступные объявления" выберите "Автозапуск содержимого" и щелкните "Добавить". Выберите новый элемент автозапуска содержимого , добавленный в список поддерживаемых объявлений .
Замечание
Кроме того, можно также добавить объявление устройства Автозапуска для пользовательского события Автозапуска.
В разделе "Действия запуска" для объявления события автозапуска содержимого введите значения в таблице ниже для первого действия запуска.
В раскрывающемся списке доступных объявлений выберите Сопоставления типов файлов и щелкните Добавить. В свойствах нового декларирования сопоставлений типов файлов установите для поля "Display Name" значение Show .ms Files и для поля "Name" значение ms_association. В разделе поддерживаемых типов файлов щелкните Добавить новое. Задайте для поля Тип файла значение .ms. Для событий содержимого AutoPlay отфильтровывает любые типы файлов, которые не связаны явно с вашим приложением.
Сохраните и закройте файл манифеста.
| Настройки | Ценность |
|---|---|
| Глагол | шоу |
| Отображаемое имя действия | Показать файлы |
| Событие содержимого | АвтоПроигрываниеПользовательскогоСобытияБыстрыйСтарт |
Значение события содержимого
Шаг 3. Добавление пользовательского интерфейса XAML
Откройте файл MainPage.xaml и добавьте следующий XAML-код в сегмент Grid по умолчанию <>.
<StackPanel Orientation="Vertical">
<TextBlock FontSize="28" Margin="10,0,800,0">Files</TextBlock>
<TextBlock x:Name="FilesBlock" FontSize="22" Height="600" Margin="10,0,800,0" />
</StackPanel>
Шаг 4. Добавление кода активации
Код на этом шаге вызывает метод для отображения папок в корневом каталоге вашего устройства хранения. Для событий, связанных с содержимым, функция «Автозапуск» передает корневую папку устройства хранения в качестве аргументов запуска, предоставляемых приложению во время события OnFileActivated. Эту папку можно извлечь из первого элемента свойства Files.
Откройте файл App.xaml.cs и добавьте следующий код в класс App.
protected override void OnFileActivated(FileActivatedEventArgs args)
{
var rootFrame = Window.Current.Content as Frame;
var page = rootFrame.Content as MainPage;
// Call ShowFolders with root folder from device storage.
page.DisplayFiles(args.Files[0] as Windows.Storage.StorageFolder);
base.OnFileActivated(args);
}
Замечание
Метод DisplayFiles добавляется на следующем шаге.
Шаг 5. Добавление кода для отображения папок
В файле MainPage.xaml.cs добавьте следующий код в класс MainPage.
internal async void DisplayFiles(Windows.Storage.StorageFolder folder)
{
foreach (Windows.Storage.StorageFile f in await ReadFiles(folder, ".ms"))
{
FilesBlock.Text += " " + f.Name + "\n";
}
}
internal async System.Threading.Tasks.Task<IReadOnlyList<Windows.Storage.StorageFile>>
ReadFiles(Windows.Storage.StorageFolder folder, string fileExtension)
{
var options = new Windows.Storage.Search.QueryOptions();
options.FileTypeFilter.Add(fileExtension);
var query = folder.CreateFileQueryWithOptions(options);
var files = await query.GetFilesAsync();
return files;
}
Шаг 6. Создание и запуск приложения
- Нажмите клавишу F5, чтобы создать и развернуть приложение (в режиме отладки).
- Чтобы запустить приложение, вставьте карту памяти или другое устройство хранения на компьютер. Затем выберите приложение из списка параметров обработчика автозапуска.
Справочник по событиям автозапуска
Система AutoPlay позволяет приложениям регистрироваться для различных событий прибытия устройств и томов (дисков). Чтобы зарегистрировать события автозапуска для содержимого, необходимо активировать функцию съемного хранилища в манифесте пакета. В этой таблице показаны события, на которые можно зарегистрироваться, и время их проведения.
| Сценарий | Событие | Описание |
|---|---|---|
| Использование фотографий на камере | WPD\ImageSource | Вызывается для камер, которые определяются как переносные устройства Windows и обладают возможностью ImageSource. |
| Использование музыки на аудиопроигрывателье | WPD\AudioSource | Вызывается для мультимедийных проигрывателей, которые определяются как переносные устройства Windows и предлагают возможность "AudioSource". |
| Использование видео на видеокамере | WPD\VideoSource | Поднятые для видеокамер, которые определены как переносные устройства Windows и предлагают возможность VideoSource. |
| Доступ к подключенном флэш-накопителю или внешнему жесткому диску | Хранение по прибытии | Вызывается при подключении диска или тома к компьютеру. Если диск или том содержат папку DCIM, AVCHD или PRIVATE\ACHD в корне диска, вызывается событие ShowPicturesOnArrival. |
| Использование фотографий из массового хранилища (устаревшая версия) | ПоказатьКартинкиПриПрибытии | Возникает, когда диск или том содержит папку DCIM, AVCHD или PRIVATE\ACHD в корне диска. Если пользователь включил Выбрать, что делать с каждым типом мультимедиа на панели управления AutoPlay, AutoPlay проверит том, подключенный к компьютеру, чтобы определить тип содержимого на диске. При обнаружении изображений вызывается ShowPicturesOnArrival. |
| Получение фотографий с общим доступом к близкому расположению (касание и отправка) | ПоказатьКартинкиПриПрибытии | Когда пользователи отправляют содержимое с помощью близкого взаимодействия (касания и отправки), Автозапуск проверяет передаваемые файлы, чтобы определить тип контента. Если изображения найдены, вызывается ShowPicturesOnArrival. |
| Использование музыки из массового хранилища (устаревшая версия) | ВоспроизвестиМузыкальныеФайлыПоПрибытию | Если пользователь включил Выбрать, что делать с каждым типом мультимедиа на панели управления Автозапуском, автозапуск изучит том, подключенный к компьютеру, чтобы определить тип содержимого на диске. При обнаружении музыкальных файлов вызывается PlayMusicFilesOnArrival. |
| Получение музыки через функцию передачи вблизи (коснитесь, чтобы отправить) | ВоспроизвестиМузыкальныеФайлыПоПрибытию | Когда пользователи отправляют содержимое с помощью близкого взаимодействия (касания и отправки), Автозапуск проверяет передаваемые файлы, чтобы определить тип контента. Если найдены музыкальные файлы, вызывается PlayMusicFilesOnArrival. |
| Использование видео из массового хранилища (устаревшая версия) | Воспроизводить видеофайлы по прибытии | Если пользователь включил Выбрать, что делать с каждым типом мультимедиа на панели управления Автозапуском, автозапуск изучит том, подключенный к компьютеру, чтобы определить тип содержимого на диске. При обнаружении видеофайлов вызывается PlayVideoFilesOnArrival. |
| Получение видео с помощью Proximity Sharing (касание и отправка) | Воспроизводить видеофайлы по прибытии | Когда пользователи отправляют содержимое с помощью близкого взаимодействия (касания и отправки), Автозапуск проверяет передаваемые файлы, чтобы определить тип контента. При обнаружении видеофайлов вызывается PlayVideoFilesOnArrival. |
| Обработка смешанных наборов файлов с подключенного устройства | СмешанноеСодержаниеПриПрибытии | Если пользователь включил Выбрать, что делать с каждым типом мультимедиа на панели управления Автозапуском, автозапуск изучит том, подключенный к компьютеру, чтобы определить тип содержимого на диске. Если определенный тип контента не найден (например, рисунки), вызывается MixedContentOnArrival. |
| Обработка смешанных наборов файлов с помощью совместного использования близкого взаимодействия (касание и отправка) | СмешанноеСодержаниеПриПрибытии | Когда пользователи отправляют содержимое с помощью близкого взаимодействия (касания и отправки), Автозапуск проверяет передаваемые файлы, чтобы определить тип контента. Если определенный тип контента не найден (например, рисунки), вызывается MixedContentOnArrival. |
| Обработка видео с оптического носителя |
Воспроизвести DVD фильм при получении ВоспроизвестиBluRayПоПрибытию ПроигратьВидеоCDФильмПоПрибытию Воспроизвести фильм Super Video CD по прибытии |
При вставке диска в оптический привод AutoPlay проверяет файлы, чтобы определить тип содержимого. При обнаружении видеофайлов возникает событие, соответствующее типу оптического диска. |
| Обработка музыки с оптического носителя |
Проигрывать аудио компакт-диск по прибытии Воспроизвести аудио DVD по прибытии |
При вставке диска в оптический привод AutoPlay проверяет файлы, чтобы определить тип содержимого. При обнаружении музыкальных файлов возникает событие, соответствующее типу оптического диска. |
| Воспроизведение расширенных дисков |
ВоспроизведениеРасширенногоCDПриПрибытии Проиграть улучшенный DVD по прибытии |
При вставке диска в оптический привод AutoPlay проверяет файлы, чтобы определить тип содержимого. При обнаружении расширенного диска возникает событие, соответствующее типу оптического диска. |
| Обработка оптических дисков с возможностью записи |
HandleCDBurningOnArrival Работа с записью DVD по прибытии HandleBDBurningOnArrival |
При вставке диска в оптический привод AutoPlay проверяет файлы, чтобы определить тип содержимого. При обнаружении записываемого диска возникает событие, соответствующее типу оптического диска. |
| Обработать любое другое устройство или подключение к томам | UnknownContentOnArrival | Поднимается для всех событий в случае обнаружения содержимого, которое не соответствует ни одному из событий содержимого AutoPlay. Использование этого события не рекомендуется. Необходимо зарегистрировать приложение только для определенных событий автозапуска, которые он может обрабатывать. |
Можно указать, что автозапуск вызывает настраиваемое событие автозапуска содержимого с помощью записи CustomEvent в файле autorun.inf для тома. Дополнительные сведения см. в записи Autorun.inf.
Вы можете зарегистрировать своё приложение как обработчик события для содержимого автозапуска или устройства автозапуска, добавив расширение в файл package.appxmanifest вашего приложения. Если вы используете Visual Studio, вы можете добавить декларацию содержимого автозапуска или устройства автозапуска на вкладке Объявления. Если вы редактируете файл package.appxmanifest вашего приложения напрямую, добавьте элемент расширения в манифест пакета, который указывает либо windows.autoPlayContent, либо windows.autoPlayDevice в качестве категории . Например, следующая запись в манифесте пакета добавляет расширение автозапуска содержимого для регистрации приложения в качестве обработчика для события ShowPicturesOnArrival.
<Applications>
<Application Id="AutoPlayHandlerSample.App">
<Extensions>
<Extension Category="windows.autoPlayContent">
<AutoPlayContent>
<LaunchAction Verb="show" ActionDisplayName="Show Pictures"
ContentEvent="ShowPicturesOnArrival" />
</AutoPlayContent>
</Extension>
</Extensions>
</Application>
</Applications>