Поделиться через


Краткое руководство: регистрация приложения для автозапуска содержимого (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

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

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

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

Необходимые условия

Microsoft Visual Studio

Инструкции

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

  1. Откройте Visual Studio и выберите пункт New Project (Создать проект) в меню File (Файл). В разделе JavaScript выберите Windows Store (Магазин Windows). Назовите приложение AutoPlayDisplayOrCopyImages и нажмите кнопку ОК.

  2. Откройте файл Package.appxmanifest и перейдите на вкладку Capabilities (Возможности). Выберите возможности Съемные носители и Библиотека изображений. Это обеспечит приложению доступ к съемным запоминающим устройствам для памяти камеры и к локальным изображениям.

  3. В файле манифеста выберите вкладку Declarations (Объявления). В раскрывающемся списке Available Declarations (Доступные объявления) выберите AutoPlay Content (Автозапуск содержимого) и нажмите Add (Добавить). Выберите новый элемент AutoPlay Content (Автозапуск содержимого), добавленный к списку Supported Declarations (Поддерживаемые объявления).

  4. Когда автозапуск порождает событие содержимого, объявление Автозапуск содержимого опознает ваше приложение как возможный вариант. Это событие основывается на содержимом устройства тома, такого как флэш-накопитель или DVD-диск. Автозапуск проверяет содержимое устройства тома и определяет, какое событие содержимого создать. Если в корне тома содержится папка с именем DCIM, AVCHD или PRIVATE\ACHD или если пользователь включил параметр Выберите, что требуется сделать с каждым из типов носителей в окне "Автозапуск (Панель управления)" и в корне тома обнаружены изображения, автозапуск создает событие ShowPicturesOnArrival.

    В разделе Launch Actions (Действия при запуске) введите указанные ниже значения для первого действия при запуске.

    Параметр Значение
    Verb (Команда) показать
    Action Display Name (Отображаемое имя действия) Show Pictures (Показывать изображения)
    Content Event (Событие содержимого) ShowPicturesOnArrival

     

    Параметр Action Display Name определяет строку, отображаемую автозапуском для приложения. Параметр Verb определяет значение, передаваемое приложению для выбранного варианта. Для события автозапуска можно указать несколько действий при запуске и использовать параметр Verb, чтобы определить, какой вариант пользователь выбрал для приложения. Выбранный пользователем вариант можно узнать, проверив свойство verb аргументов события запуска, переданных приложению. Для параметра Команда можно использовать любое значение, кроме значения open, которое зарезервировано.

  5. В разделе Launch Actions (Действия при запуске) для элемента AutoPlay Content (Автозапуск содержимого) щелкните Add New (Добавить), чтобы добавить второе действие при запуске. Введите следующие значения для второго действия при запуске.

    Параметр Значение
    Verb (Команда) копировать
    Action Display Name (Отображаемое имя действия) Copy Pictures Into Library (Копировать изображения в библиотеку)
    Content Event (Событие содержимого) ShowPicturesOnArrival

     

  6. В раскрывающемся списке Доступные объявления выберите Сопоставления типов файлов и нажмите кнопку Добавить. В разделе "Свойства" нового объявления Сопоставления типов файлов установите для поля Отображаемое имя значение AutoPlay Copy or Show Images, а для поля Имя — значение image_association1. В разделе Поддерживаемые типы файлов нажмите кнопку Добавить. Для поля File Type (Тип файла) установите значение .jpg. В разделе Supported File Types (Поддерживаемые типы файлов) щелкните Add New (Добавить). Установите для поля File Type (Тип файла) нового сопоставления файлов значение .png. Для событий автозапуска содержимого средство автозапуска отфильтровывает любые типы файлов, которые явно не связаны с вашим приложением.

  7. Сохраните и закройте файл манифеста.

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

  • Откройте файл Default.html и добавьте следующий HTML-код в раздел <body>.

    <label>File List</label>
    <div id="files" style="position:fixed;top:30px;height:400px;width:600px" ></div>
    

3. Добавление кода инициализации

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

  • Откройте папку js. Откройте файл Default.js и замените функцию onactivated по умолчанию следующим кодом.

    var filesDiv;
    
    app.onactivated = function (args) {
        if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.file) {
            filesDiv = document.getElementById("files");
    
            if (args.detail.verb === "show") {
                // Call displayImages with root folder from camera storage.
                displayImages(args.detail.files[0]);
            }
            else if (args.detail.verb === "copy") {
                // Call copyImagesToLibrary with root folder from camera storage.
                copyImagesToLibrary(args.detail.files[0]);
            }
        }
        args.setPromise(WinJS.UI.processAll());
    };
    

4. Добавление кода для отображения изображений

  • В файле Default.js добавьте следующий код после функции onactivated.

    function displayImages(rootFolder) {
        // Display images from first folder in root\DCIM.
        rootFolder.getFolderAsync("DCIM").then(
        function (dcimFolder) {
            dcimFolder.getFoldersAsync().then(
            function (cameraFolders) {
                cameraFolders[0].getFilesAsync().then(
                function (files) {
                    files.forEach(function (file) {
                        filesDiv.innerHTML += file.name + "<br />";
                        displayImage(file);
                    });
                });
            });
        });
    }
    
    function displayImage(file) {
        try {
            var element = document.createElement("img");
            element.src = window.URL.createObjectURL(file, { oneTimeOnly: true });
            element.height = 100;
            element.width = 100;
            filesDiv.appendChild(element);
            filesDiv.innerHTML += "<br>";
        }
        catch (e) {
            filesDiv.innerHTML += e.message;
        }
    }
    

5. Добавление кода для копирования изображений

  • В файле Default.js добавьте следующий код после функции displayImage.

    function copyImagesToLibrary(rootFolder) {
        try {
            var now = new Date();
            var folderName =
                "Images " + now.toDateString() + " " + now.getHours() +
                            now.getMinutes() + now.getSeconds();
    
            Windows.Storage.KnownFolders.
            picturesLibrary.createFolderAsync(folderName).then(
                    function (imageFolder) {
                        // Copy images from first folder in root\DCIM.
                        rootFolder.getFolderAsync("DCIM").then(
                    function (dcimFolder) {
                        dcimFolder.getFoldersAsync().then(
                    function (cameraFolders) {
                        cameraFolders[0].getFilesAsync().then(
                    function (files) {
                        files.forEach(function (file) {
                            copyImage(file, imageFolder);
                        });
                    });
                    });
                    });
                    });
        } catch (e) {
            filesDiv.innerHTML = "Failed copy images.<br />" + e.message;
        }
    }
    
    function copyImage(file, imageFolder) {
        try {
            file.copyAsync(
                imageFolder, file.fileName,
                    Windows.Storage.NameCollisionOption.replaceExisting).then(
                        function (newFile) {
                            filesDiv.innerHTML += file.name + " copied.<br />";
                        });
        } catch (e) {
            filesDiv.innerHTML += "Failed to copy image.<br />" + e.message;
        }
    }
    

6. Сборка и запуск приложения

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

Краткая сводка и дальнейшие действия

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

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

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

 

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

Связанные разделы

Запуск приложения с помощью автозапуска