Controlar la activación de archivos en una aplicación de Windows
La aplicación puede registrarse para convertirse en el controlador predeterminado para un tipo de archivo determinado. Tanto las aplicaciones de escritorio de Windows como las aplicaciones para la Plataforma universal de Windows (UWP) pueden registrarse para ser un controlador de archivos predeterminado. Si el usuario elige la aplicación como controlador predeterminado para un tipo de archivo determinado, la aplicación se activará cuando se inicie ese tipo de archivo.
Recomendamos que solo te registres para un tipo de archivo si esperas gestionar todas las aperturas de archivos para ese tipo de archivo. Si la aplicación solo necesita usar el tipo de archivo internamente, no es necesario registrarse para que sea el controlador predeterminado. Si decide registrarse para un tipo de archivo, debe proporcionar al usuario final la funcionalidad que se espera cuando la aplicación esté activada para ese tipo de archivo. Por ejemplo, una aplicación de visor de imágenes puede registrarse para mostrar un archivo .jpg. Para obtener más información sobre las asociaciones de archivos, consulta Guidelines for file types and URIs.
Estos pasos muestran cómo registrarse para un tipo de archivo personalizado, .alsdk y cómo activar la aplicación cuando el usuario inicia un archivo .alsdk.
Nota
En Windows, ciertos URI y extensiones de archivo están reservados para su uso por parte de aplicaciones integradas y el sistema operativo. Se omitirán los intentos de registrar la aplicación con un URI reservado o una extensión de archivo. Consulte nombres de esquema de URI reservados y tipos de archivo para obtener una lista alfabética de esquemas de URI que no puede registrar para sus aplicaciones porque están reservados o prohibidos.
API importantes
En este tema se usan las SIGUIENTES API:
- Windows.ApplicationModel.Activation.FileActivatedEventArgs
- Windows.UI.Xaml.Application.OnFileActivated
- AppInstance.GetActivatedEventArgs
Paso 1: Especificar el punto de extensión en el manifiesto del paquete
La aplicación recibe eventos de activación solo para las extensiones de archivo enumeradas en el manifiesto del paquete. Este es el modo en que indica que la aplicación controla los archivos con la extensión .alsdk
.
En el Explorador de soluciones de , haga doble clic en package.appxmanifest para abrir el diseñador de manifiestos. Seleccione la pestaña Declaraciones y, en la lista desplegable de Declaraciones disponibles , seleccione Asociaciones de Tipos de Archivo y, a continuación, haga clic en Agregar. Consulte identificadores programáticos para obtener más información acerca de los identificadores usados por las asociaciones de archivos.
Esta es una breve descripción de cada uno de los campos que puede rellenar el diseñador de manifiestos:
Campo | Descripción |
---|---|
Nombre para mostrar | Especifique el nombre visible de un grupo de tipos de archivo. El nombre para mostrar se usa para identificar el tipo de archivo en el Establecer programas predeterminados en el Panel de control de . |
Logo | Especifique el logotipo utilizado para identificar el tipo de archivo en el escritorio y en el Establecer programas predeterminados en el Panel de control. Si no se especifica ningún logotipo, se usa el logotipo pequeño de la aplicación. |
Consejo de Información | Especifique la información de para un grupo de tipos de archivo con el. Este texto de información sobre herramientas aparece cuando el usuario mantiene el puntero sobre el icono de un archivo de este tipo. |
nombre | Elija un nombre para un grupo de tipos de archivo que compartan el mismo nombre para mostrar, logotipo, sugerencia de información y marcas de edición. Elija un nombre de grupo que pueda permanecer igual en todas las actualizaciones de la aplicación. Nota El nombre debe estar en minúsculas. |
Tipo de contenido | Especifique el tipo de contenido MIME, como image/jpeg, para un tipo de archivo determinado. Nota importante sobre los tipos de contenido permitidos: Esta es una lista alfabética de tipos de contenido MIME que no se pueden escribir en el manifiesto del paquete porque están reservados o prohibidos: de aplicación/descarga forzada, aplicación/octet-stream, aplicación/desconocida, aplicación/x-msdownload. |
tipo de archivo | Especifique el tipo de archivo para el que se va a registrar, precedido por un punto, por ejemplo, ".jpeg". Tipos de archivo reservados y prohibidos: Consulta Nombres de esquema URI reservados y tipos de archivo para obtener una lista alfabética de tipos de archivo asociados con aplicaciones integradas, los cuales no puedes registrar para tus aplicaciones UWP porque están reservados o prohibidos. |
- Escriba
alsdk
como el nombre . - Escriba
.alsdk
como tipo de archivo . - Escriba "imágenes\Icon.png" como logotipo.
- Presione Ctrl+S para guardar el cambio en package.appxmanifest.
Los pasos anteriores agregan un elemento Extensión como este al manifiesto del paquete. La categoría windows.fileTypeAssociation indica que la aplicación controla los archivos con la extensión .alsdk
.
<Extensions>
<uap:Extension Category="windows.fileTypeAssociation">
<uap:FileTypeAssociation Name="alsdk">
<uap:Logo>images\icon.png</uap:Logo>
<uap:SupportedFileTypes>
<uap:FileType>.alsdk</uap:FileType>
</uap:SupportedFileTypes>
</uap:FileTypeAssociation>
</uap:Extension>
</Extensions>
Paso 2: Agregar los iconos adecuados
Las aplicaciones que se convierten en el valor predeterminado de un tipo de archivo tienen sus iconos mostrados en varios lugares del sistema. Por ejemplo, estos iconos se muestran en:
- Vista de elementos del Explorador de Windows, menús contextuales y la cinta de herramientas
- Panel de control de programas predeterminados
- Selector de archivos
- Resultados de la búsqueda en la pantalla Inicio
Incluya un icono de 44 x 44 con el proyecto para que el logotipo pueda aparecer en esas ubicaciones. Iguala el aspecto del logotipo de la aplicación y usa el color de fondo en lugar de un icono transparente. Haga que el logotipo se extienda hasta el borde sin añadir márgenes. Pruebe los iconos en fondos blancos. Consulte Directrices para los activos de mosaico e ícono para obtener más información sobre los iconos.
Paso 3: Controlar el evento activado
El controlador de eventos OnFileActivated recibe todos los eventos de activación de archivos.
protected override void OnFileActivated(FileActivatedEventArgs args)
{
// TODO: Handle file activation
// The number of files received is args.Files.Count
// The name of the first file is args.Files[0].Name
}
Protected Overrides Sub OnFileActivated(ByVal args As Windows.ApplicationModel.Activation.FileActivatedEventArgs)
' TODO: Handle file activation
' The number of files received is args.Files.Size
' The name of the first file is args.Files(0).Name
End Sub
void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs const& args)
{
// TODO: Handle file activation.
auto numberOfFilesReceived{ args.Files().Size() };
auto nameOfTheFirstFile{ args.Files().GetAt(0).Name() };
}
void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs^ args)
{
// TODO: Handle file activation
// The number of files received is args->Files->Size
// The name of the first file is args->Files->GetAt(0)->Name
}
Nota
Cuando se inicia a través del contrato de archivo, asegúrate de que el botón Atrás devuelva al usuario a la pantalla que inició la aplicación y no al contenido anterior de la aplicación.
Nota
En una aplicación WinUI, en App.OnLaunched (o de hecho en cualquier momento) puedes llamar a (AppInstance.GetActivatedEventArgs) para recuperar los argumentos de eventos activados y comprobar cómo se activó la aplicación. Consulta la migración de la funcionalidad del ciclo de vida de la aplicación para obtener más información sobre las diferencias de ciclo de vida entre las aplicaciones UWP y WinUI.
Se recomienda que cree un nuevo Frame de XAML para cada evento de activación que abra una nueva página. De este modo, la pila de retroceso de navegación del nuevo marco XAML no contiene ningún contenido anterior que la aplicación pueda tener en la ventana actual cuando la aplicación se suspenda. Si decides usar un único marco XAML para Inicio y para contratos de archivos, debes borrar las páginas en el diario de navegación del marcoantes de navegar hacia una nueva página.
Cuando la aplicación se inicia a través de la activación de archivos, debes considerar la posibilidad de incluir la interfaz de usuario que permite al usuario volver a la página superior de la aplicación.
Observaciones
Los archivos que recibe podrían provenir de un origen que no es de confianza. Se recomienda validar el contenido de un archivo antes de tomar medidas en él.