Автоматическое запуск с помощью автозапуска

Автозапуск можно использовать для предоставления приложения в качестве параметра, когда пользователь подключает устройство к компьютеру. К ним относятся устройства, отличные от тома, такие как камера или проигрыватель мультимедиа, или устройства тома, такие как USB-диск, SD карта или DVD-диск. Вы также можете использовать автозапуск для предложения приложения в качестве параметра, когда пользователи совместно используют файлы между двумя компьютерами с помощью близкого взаимодействия (касания).

Примечание.

Если вы являетесь производителем устройств и хотите связать приложение устройства Microsoft Store с обработчиком автозапуска для устройства, вы можете определить это приложение в метаданных устройства. Дополнительные сведения см. в разделе "Автозапуск" для приложений устройств Microsoft Store.

Регистрация для содержимого Автозапуска

Вы можете зарегистрировать приложения в качестве параметров для событий содержимого Автозапуска . События содержимого автозапуска возникают, когда устройство тома, например память камеры, карта, большой диск или DVD-диск вставляется на компьютер. Здесь показано, как определить приложение как параметр автозапуска при вставке устройства тома с камеры.

В этом руководстве вы создали приложение, которое отображает файлы изображений или копирует их в изображения. Вы зарегистрировали приложение для события содержимого AutoPlay ShowPicturesOnArrival .

Автозапуск также вызывает события содержимого для общего содержимого между компьютерами с помощью близкого взаимодействия (касания). Действия и код в этом разделе можно использовать для обработки файлов, совместно используемых между компьютерами, которые используют близкое взаимодействие. В следующей таблице перечислены события содержимого автозапуска, доступные для совместного использования содержимого с помощью близкого взаимодействия.

Действие Событие содержимого автозапуска
Общий доступ к музыке PlayMusicFilesOnArrival
Общий доступ к видео PlayVideoFilesOnArrival

При совместном использовании файлов свойство Files объекта FileActivatedEventArgs содержит ссылку на корневую папку, содержащую все общие файлы.

Шаг 1. Создание проекта и добавление объявлений автозапуска

  1. Откройте Microsoft Visual Studio и выберите новый проект в меню "Файл ". В разделе Visual C# в разделе Windows выберите пустое приложение (универсальное приложение Windows). Назовите приложение AutoPlayDisplayOrCopyImages и нажмите кнопку "ОК".
  2. Откройте файл Package.appxmanifest и перейдите на вкладку "Возможности". Выберите возможности съемных служба хранилища и библиотеки изображений. Это дает приложению доступ к съемным устройствам хранилища для памяти камеры и доступ к локальным изображениям.
  3. В файле манифеста выберите вкладку "Объявления ". В раскрывающемся списке "Доступные объявления" выберите "Автозапуск содержимого " и нажмите кнопку "Добавить". Выберите новый элемент содержимого автозапуска, добавленный в список поддерживаемых объявлений .
  4. Объявление "Содержимое автозапуска" определяет приложение как параметр при вызове автозапуска события содержимого. Это событие основано на содержимом устройства тома, такого как DVD-диск или большой диск. Автозапуск проверяет содержимое устройства тома и определяет, какое событие содержимого необходимо вызвать. Если корневой каталог тома содержит папку DCIM, AVCHD или PRIVATE\ACHD, или если пользователь включил выбор того, что делать с каждым типом мультимедиа в панель управления автозапуска и рисунки находятся в корневом каталоге тома, автозапуск вызывает событие ShowPicturesOnArrival. В разделе "Действия запуска" введите значения из таблицы 1 ниже для первого действия запуска.
  5. В разделе "Действия запуска" для элемента "Содержимое автозапуска" нажмите кнопку "Добавить новое", чтобы добавить второе действие запуска. Введите значения в таблице 2 ниже для второго действия запуска.
  6. В раскрывающемся списке "Доступные объявления" выберите "Сопоставления типов файлов" и нажмите кнопку "Добавить". В разделе "Свойства" нового объявления ассоциаций типов файлов задайте для поля отображаемое имя автоматически копировать или показывать изображения, а поле "Имя" — image_association1. В разделе "Поддерживаемые типы файлов" нажмите кнопку "Добавить". Задайте для поля "Тип файла" значение .jpg. В разделе "Поддерживаемые типы файлов" задайте для поля "Тип файла" нового сопоставления файлов значение .png. Для событий содержимого автозапуск фильтрует любые типы файлов, которые не связаны явным образом с приложением.
  7. Сохраните и закройте файл манифеста.

Таблица 1

Параметр Значение
Команда show
Отображаемое имя действия Показать рисунки
Событие содержимого ShowPicturesOnArrival

Параметр отображаемого имени действия определяет строку, отображаемую автозапуском для приложения. Параметр "Команда" определяет значение, переданное приложению для выбранного параметра. Можно указать несколько действий запуска для события Автозапуска и использовать параметр "Команда ", чтобы определить, какой вариант выбран для вашего приложения. Можно указать, какой параметр выбран пользователем, проверка свойством команды аргументов события запуска, переданных в приложение. Можно использовать любое значение для параметра "Команда", за исключением открытого, зарезервированного.

Таблица 2

Параметр Значение
Команда copy
Отображаемое имя действия Копирование рисунков в библиотеку
Событие содержимого ShowPicturesOnArrival

Шаг 2. Добавление пользовательского интерфейса XAML

Откройте файл MainPage.xaml и добавьте следующий КОД XAML в раздел сетки> по умолчанию<.

<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);
}

Обратите внимание на то, DisplayImagesCopyImages что методы добавлены в следующих шагах.

Шаг 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. Создание и запуск приложения

  1. Нажмите клавишу F5, чтобы создать и развернуть приложение (в режиме отладки).
  2. Чтобы запустить приложение, вставьте память камеры карта или другое устройство хранения с камеры на компьютер. Затем выберите один из параметров события содержимого, указанный в файле package.appxmanifest в списке параметров автозапуска. Этот пример кода отображает только изображения или копирует изображения в папке DCIM памяти камеры карта. Если память камеры карта хранит изображения в папке AVCHD или PRIVATE\ACHD, необходимо соответствующим образом обновить код.

Примечание.

Если у вас нет памяти камеры карта, можно использовать флэш-диск, если у него есть папка с именем DCIM в корневом каталоге, а если в папке DCIM есть вложенная папка, содержащая изображения.

Регистрация для устройства Автозапуска

Вы можете зарегистрировать приложения в качестве параметров для событий устройства AutoPlay . События устройства автозапуска возникают при подключении устройства к компьютеру.

Здесь показано, как определить приложение как параметр автозапуска при подключении камеры к компьютеру. Приложение регистрируется в качестве обработчика для события WPD\ImageSourceAutoPlay . Это обычное событие, которое система Windows Portable Device (WPD) вызывает, когда камеры и другие устройства создания изображений уведомляют его о том, что они являются ImageSource с помощью MTP. Дополнительные сведения см. в разделе "Переносные устройства Windows".

Важное значение Windows.Devices.Portable.служба хранилищаAPI-интерфейсы устройств являются частью семейства классических устройств. Приложения могут использовать эти API только на устройствах Windows 10 в семействе классических устройств, таких как компьютеры.

Шаг 1. Создание другого проекта и добавление объявлений автозапуска

  1. Откройте Visual Studio и выберите "Создать проект " в меню "Файл ". В разделе Visual C# в разделе Windows выберите пустое приложение (универсальное приложение Windows). Назовите приложение AutoPlayDevice_Камера и нажмите кнопку "ОК".
  2. Откройте файл Package.appxmanifest и выберите вкладку "Возможности". Выберите возможность съемных служба хранилища. Это дает приложению доступ к данным на камере в качестве съемных носителей.
  3. В файле манифеста выберите вкладку "Объявления ". В раскрывающемся списке "Доступные объявления" выберите "Устройство автозапуска" и нажмите кнопку "Добавить". Выберите новый элемент устройства Автозапуска, добавленный в список поддерживаемых объявлений .
  4. Объявление устройства Автозапуска определяет приложение как параметр, когда Автозапуск вызывает событие устройства для известных событий. В разделе "Действия запуска" введите значения в таблице ниже для первого действия запуска.
  5. В раскрывающемся списке "Доступные объявления" выберите "Сопоставления типов файлов" и нажмите кнопку "Добавить". В разделе "Свойства" нового объявления ассоциаций типов файлов задайте поле отображаемого имени для отображения изображений из Камера и поля "Имя" для camera_association1. В разделе "Поддерживаемые типы файлов" нажмите кнопку "Добавить новое " (при необходимости). Задайте для поля "Тип файла" значение .jpg. В разделе "Поддерживаемые типы файлов" нажмите кнопку "Добавить новый ". Задайте для поля "Тип файла" новое сопоставление файлов .png. Для событий содержимого автозапуск фильтрует любые типы файлов, которые не связаны явным образом с приложением.
  6. Сохраните и закройте файл манифеста.
Параметр Значение
Команда show
Отображаемое имя действия Показать рисунки
Событие содержимого WPD\ImageSource

Параметр отображаемого имени действия определяет строку, отображаемую автозапуском для приложения. Параметр "Команда" определяет значение, переданное приложению для выбранного параметра. Можно указать несколько действий запуска для события Автозапуска и использовать параметр "Команда ", чтобы определить, какой вариант выбран для вашего приложения. Можно указать, какой параметр выбран пользователем, проверка свойством команды аргументов события запуска, переданных в приложение. Можно использовать любое значение для параметра "Команда", за исключением открытого, зарезервированного. Пример использования нескольких команд в одном приложении см. в разделе "Регистрация для автозапуска".

Шаг 2. Добавление ссылки на сборку для расширений настольных компьютеров

API- интерфейсы, необходимые для доступа к хранилищу на переносимом устройстве Windows, Windows.Devices.Portable.служба хранилищаУстройство является частью семейства классических устройств. Это означает, что для использования API требуется специальная сборка, и эти вызовы будут работать только на устройстве в семействе классических устройств (например, на компьютере).

  1. В Обозреватель решений щелкните правой кнопкой мыши ссылки и добавьте ссылку....
  2. Разверните универсальные окна и щелкните "Расширения".
  3. Затем выберите расширения рабочего стола Windows для UWP и нажмите кнопку "ОК".

Шаг 3. Добавление пользовательского интерфейса XAML

Откройте файл MainPage.xaml и добавьте следующий КОД XAML в раздел сетки> по умолчанию<.

<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. Добавление кода активации

Код на этом шаге ссылается на камеру как служба хранилища Device путем передачи идентификатора сведений об устройстве камеры методу 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. Добавление кода для отображения сведений об устройстве

Вы можете получить сведения о камере из свойств класса служба хранилища Device. Код на этом шаге отображает имя устройства и другие сведения пользователю при запуске приложения. Затем код вызывает методы 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));
    }
}

Примечание.

GetThumbnail Методы GetImageList добавляются на следующем шаге.

Шаг 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. Создание и запуск приложения

  1. Нажмите клавишу F5, чтобы создать и развернуть приложение (в режиме отладки).
  2. Чтобы запустить приложение, подключите камеру к компьютеру. Затем выберите приложение из списка параметров автозапуска.

Примечание.

Не все камеры объявляют событие устройства WPD\ImageSource AutoPlay.

Настройка съемных носителей

Вы можете определить устройство тома, например память карта или большой диск в качестве устройства автозапуска, когда устройство тома подключено к компьютеру. Это особенно полезно, если вы хотите связать определенное приложение для автозапуска для пользователя для устройства тома.

Здесь показано, как определить устройство тома как устройство автозапуска.

Чтобы определить устройство тома как устройство Автозапуска , добавьте файл autorun.inf на корневой диск устройства. В файле autorun.inf добавьте ключ CustomEvent в раздел Автозапуска . Когда устройство тома подключается к компьютеру, автозапуск находит файл autorun.inf и обрабатывает том как устройство. Автозапуск создаст событие Автозапуска с помощью имени, предоставленного для ключа CustomEvent. Затем вы можете создать приложение и зарегистрировать приложение в качестве обработчика для этого события Автозапуска . Когда устройство подключено к компьютеру, автозапуск отобразит приложение в качестве обработчика для устройства тома. Дополнительные сведения о файлах autorun.inf см. в записях autorun.inf.

Шаг 1. Создание файла autorun.inf

На корневом диске устройства тома добавьте файл с именем autorun.inf. Откройте файл autorun.inf и добавьте следующий текст.

[AutoRun]
CustomEvent=AutoPlayCustomEventQuickstart

Шаг 2. Создание проекта и добавление объявлений автозапуска

  1. Откройте Visual Studio и выберите "Создать проект " в меню "Файл ". В разделе Visual C# в разделе Windows выберите пустое приложение (универсальное приложение Windows). Назовите приложение AutoPlayCustomEvent и нажмите кнопку "ОК".
  2. Откройте файл Package.appxmanifest и выберите вкладку "Возможности". Выберите возможность съемных служба хранилища. Это дает приложению доступ к файлам и папкам на съемных устройствах хранения.
  3. В файле манифеста выберите вкладку "Объявления ". В раскрывающемся списке "Доступные объявления" выберите "Автозапуск содержимого " и нажмите кнопку "Добавить". Выберите новый элемент содержимого автозапуска, добавленный в список поддерживаемых объявлений .

Примечание.

Кроме того, можно добавить объявление устройства Автозапуска для пользовательского события Автозапуска.

  1. В разделе "Действия запуска" для объявления события автозапуска содержимого введите значения в таблице ниже для первого действия запуска.
  2. В раскрывающемся списке "Доступные объявления" выберите "Сопоставления типов файлов" и нажмите кнопку "Добавить". В разделе "Свойства нового объявления сопоставлений типов файлов" задайте поле отображаемого имени для отображения MS Files и поля "Имя" для ms_association. В разделе "Поддерживаемые типы файлов" нажмите кнопку "Добавить". Задайте для поля "Тип файла" значение .ms. Для событий содержимого автозапуск отфильтровывает любые типы файлов, которые не связаны явным образом с приложением.
  3. Сохраните и закройте файл манифеста.
Параметр Значение
Команда show
Отображаемое имя действия Показать файлы
Событие содержимого AutoPlayCustomEventQuickstart

Значение события содержимого — это текст, предоставленный для ключа CustomEvent в файле autorun.inf. Параметр отображаемого имени действия определяет строку, отображаемую автозапуском для приложения. Параметр "Команда" определяет значение, переданное приложению для выбранного параметра. Можно указать несколько действий запуска для события Автозапуска и использовать параметр "Команда ", чтобы определить, какой вариант выбран для вашего приложения. Можно указать, какой параметр выбран пользователем, проверка свойством команды аргументов события запуска, переданных в приложение. Можно использовать любое значение для параметра "Команда", за исключением открытого, зарезервированного.

Шаг 3. Добавление пользовательского интерфейса XAML

Откройте файл MainPage.xaml и добавьте следующий КОД XAML в раздел сетки> по умолчанию<.

<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. Создание и запуск приложения

  1. Нажмите клавишу F5, чтобы создать и развернуть приложение (в режиме отладки).
  2. Чтобы запустить приложение, вставьте в компьютер память карта или другое устройство хранения. Затем выберите приложение из списка параметров обработчика автозапуска.

Справочник по событиям автозапуска

Система автозапуска позволяет приложениям регистрироваться для различных событий прибытия устройства и тома (диска). Чтобы зарегистрировать события содержимого автозапуска, необходимо включить возможность съемных служба хранилища в манифесте пакета. В этой таблице показаны события, для которых можно зарегистрировать и когда они возникают.

Сценарий Мероприятие Description
Использование фотографий на Камера WPD\ImageSource Вызывается для камер, которые определяются как переносные устройства Windows и предлагают возможность ImageSource.
Использование музыки на аудиопроигрывателье WPD\AudioSource Вызывается для проигрывателей мультимедиа, которые определены как переносные устройства Windows и предлагают возможность AudioSource.
Использование видео на видеокамере WPD\VideoSource Поднятые для видеокамер, которые определены как переносные устройства Windows и предлагают возможность VideoSource.
Доступ к подключенном флэш-накопителю или внешнему жесткому диску служба хранилища OnArrival Вызывается при подключении диска или тома к компьютеру. Если диск или том содержат папку DCIM, AVCHD или PRIVATE\ACHD в корне диска, событие ShowPicturesOnArrival вызывается.
Использование фотографий из массового хранилища (устаревшая версия) ShowPicturesOnArrival Возникает, когда диск или том содержит папку DCIM, AVCHD или PRIVATE\ACHD в корне диска. IIf, который пользователь включил выбор того, что делать с каждым типом мультимедиа в автозапуске панель управления, автозапуск будет проверять том, подключенный к компьютеру, чтобы определить тип содержимого на диске. При обнаружении рисунков вызывается ShowPicturesOnArrival .
Получение фотографий с общим доступом к близкому расположению (касание и отправка) ShowPicturesOnArrival Когда пользователи отправляют содержимое с помощью близкого взаимодействия (касания и отправки), автозапуск проверяет общие файлы, чтобы определить тип контента. Если изображения найдены, вызывается ShowPicturesOnArrival .
Использование музыки из массового хранилища (устаревшая версия) PlayMusicFilesOnArrival Если пользователь включил выбор того, что делать с каждым типом носителей в панель управления автозапуска, автозапуск будет проверять том, подключенный к компьютеру, чтобы определить тип содержимого на диске. При обнаружении музыкальных файлов вызывается PlayMusicFilesOnArrival .
Получение музыки с помощью совместного использования близкого взаимодействия (касание и отправка) PlayMusicFilesOnArrival Когда пользователи отправляют содержимое с помощью близкого взаимодействия (касания и отправки), автозапуск проверяет общие файлы, чтобы определить тип контента. При обнаружении музыкальных файлов вызывается PlayMusicFilesOnArrival .
Использование видео из массового хранилища (устаревшая версия) PlayVideoFilesOnArrival Если пользователь включил выбор того, что делать с каждым типом носителей в панель управления автозапуска, автозапуск будет проверять том, подключенный к компьютеру, чтобы определить тип содержимого на диске. При обнаружении видеофайлов вызывается PlayVideoFilesOnArrival .
Получение видео с общим доступом к близкому расположению (касание и отправка) PlayVideoFilesOnArrival Когда пользователи отправляют содержимое с помощью близкого взаимодействия (касания и отправки), автозапуск проверяет общие файлы, чтобы определить тип контента. При обнаружении видеофайлов вызывается PlayVideoFilesOnArrival .
Обработка смешанных наборов файлов с подключенного устройства MixedContentOnArrival Если пользователь включил выбор того, что делать с каждым типом носителей в панель управления автозапуска, автозапуск будет проверять том, подключенный к компьютеру, чтобы определить тип содержимого на диске. Если определенный тип контента не найден (например, рисунки), вызывается MixedContentOnArrival .
Обработка смешанных наборов файлов с помощью совместного использования близкого взаимодействия (касание и отправка) MixedContentOnArrival Когда пользователи отправляют содержимое с помощью близкого взаимодействия (касания и отправки), автозапуск проверяет общие файлы, чтобы определить тип контента. Если определенный тип контента не найден (например, рисунки), вызывается MixedContentOnArrival .
Обработка видео с оптического носителя PlayDVDMovieOnArrival
PlayBluRayOnArrival
PlayVideoCDMovieOnArrival
PlaySuperVideoCDMovieOnArrival
При вставке диска в оптический диск автозапуск проверяет файлы, чтобы определить тип содержимого. При обнаружении видеофайлов возникает событие, соответствующее типу оптического диска.
Обработка музыки с оптического носителя PlayCDAudioOnArrival
PlayDVDAudioOnArrival
При вставке диска в оптический диск автозапуск проверяет файлы, чтобы определить тип содержимого. При обнаружении музыкальных файлов возникает событие, соответствующее типу оптического диска.
Воспроизведение расширенных дисков PlayEnhancedCDOnArrival
PlayEnhancedDVDOnArrival
При вставке диска в оптический диск автозапуск проверяет файлы, чтобы определить тип содержимого. При обнаружении расширенного диска возникает событие, соответствующее типу оптического диска.
Обработка оптических дисков с возможностью записи HandleCDBurningOnArrival
HandleDVDBurningOnArrival
HandleBDBurningOnArrival
При вставке диска в оптический диск автозапуск проверяет файлы, чтобы определить тип содержимого. При обнаружении записываемого диска возникает событие, соответствующее типу оптического диска.
Обработка любого другого устройства или подключения тома UnknownContentOnArrival Вызывается для всех событий в случае обнаружения содержимого, которое не соответствует ни одному из событий содержимого автозапуска. Использование этого события не рекомендуется. Необходимо зарегистрировать приложение только для определенных событий автозапуска, которые он может обрабатывать.

Можно указать, что автозапуск создает настраиваемое событие автозапуска содержимого с помощью записи CustomEvent в файле autorun.inf для тома. Дополнительные сведения см. в записи Autorun.inf.

Вы можете зарегистрировать приложение в качестве обработчика событий автозапуска или устройства Автозапуска, добавив расширение в файл package.appxmanifest для приложения. Если вы используете Visual Studio, вы можете добавить объявление "Содержимое автозапуска" или "Устройство автозапуска" на вкладке "Объявления". Если вы редактируете файл package.appxmanifest для приложения напрямую, добавьте элемент Extension в манифест пакета, указывающий 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>