Windows.UI.Input.Preview.Injection Espace de noms
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit la prise en charge de la génération et de l’automatisation par programmation des entrées à partir d’un large éventail d’appareils tels que le clavier, la souris, le tactile, le stylet et le boîtier de commande.
Important
Les API de cet espace de noms nécessitent la fonctionnalité restreinte inputInjectionBrokered.
Classes
InjectedInputGamepadInfo |
Représente une entrée de boîtier de commande générée par programmation. |
InjectedInputKeyboardInfo |
Représente une entrée de clavier générée par programmation, telle qu’une touche Tab ou Maj+Tab (Tabulation inversée). |
InjectedInputMouseInfo |
Représente l’entrée de souris générée par programmation. |
InjectedInputPenInfo |
Représente l’entrée de stylet générée par programmation. |
InjectedInputTouchInfo |
Représente une entrée tactile générée par programmation. |
InputInjector |
Représente le périphérique d’entrée virtuel pour l’envoi des données d’entrée. |
Structures
InjectedInputPoint |
Contient les coordonnées d’écran du pointeur en pixel indépendant de l’appareil (DIP). |
InjectedInputPointerInfo |
Contient des informations de pointeur de base communes à tous les types de pointeurs. |
InjectedInputRectangle |
Décalages, à partir du pointeur injecté, pour le cadre englobant qui représente la zone de contact tactile. |
Énumérations
InjectedInputButtonChangeKind |
Spécifie les modifications d’état d’un bouton associé à un pointeur. |
InjectedInputKeyOptions |
Spécifie les différentes options, ou modificateurs, utilisés pour simuler l’entrée à partir de claviers physiques ou virtuels via InjectedInputKeyboardInfo. |
InjectedInputMouseOptions |
Spécifie les différentes options, ou modificateurs, utilisées pour simuler l’entrée de la souris via InjectedInputMouseInfo. |
InjectedInputPenButtons |
Spécifie les options de stylet utilisées pour simuler l’entrée de stylet via InjectedInputPenInfo. |
InjectedInputPenParameters |
Spécifie les états de stylet utilisés pour simuler l’entrée de stylet via InjectedInputPenInfo. |
InjectedInputPointerOptions |
Spécifie les différentes options, ou modificateurs, utilisées pour simuler l’entrée de pointeur via InjectedInputMouseInfo, InjectedInputPenInfo et InjectedInputTouchInfo. |
InjectedInputShortcut |
Spécifie les raccourcis système pour InjectShortcut. |
InjectedInputTouchParameters |
Spécifie les états tactiles utilisés pour simuler l’entrée tactile via InjectedInputTouchInfo. |
InjectedInputVisualizationMode |
Spécifie le type de commentaires visuels affichés pour le type d’entrée injecté. |
Exemples
Voici un exemple de fonction d’injection d’entrée tactile.
Tout d’abord, nous appelons TryCreate pour instancier l’objet InputInjector .
Ensuite, nous appelons InitializeTouchInjection avec un InjectedInputVisualizationMode de Default
.
Après avoir calculé le point d’injection, nous appelons InjectedInputTouchInfo pour initialiser la liste des points tactiles à injecter (pour cet exemple, nous créons un point tactile correspondant au pointeur d’entrée de la souris).
Enfin, nous appelons InjectTouchInput deux fois, la première pour un pointeur vers le bas et la deuxième pour un pointeur vers le haut.
/// <summary>
/// Inject touch input on injection target corresponding
/// to mouse click on input target.
/// </summary>
/// <param name="pointerPoint">The mouse click pointer.</param>
private void InjectTouchForMouse(PointerPoint pointerPoint)
{
// Create the touch injection object.
_inputInjector = InputInjector.TryCreate();
if (_inputInjector != null)
{
_inputInjector.InitializeTouchInjection(
InjectedInputVisualizationMode.Default);
// Create a unique pointer ID for the injected touch pointer.
// Multiple input pointers would require more robust handling.
uint pointerId = pointerPoint.PointerId + 1;
// Get the bounding rectangle of the app window.
Rect appBounds =
Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().VisibleBounds;
// Get the top left screen coordinates of the app window rect.
Point appBoundsTopLeft = new Point(appBounds.Left, appBounds.Top);
// Get a reference to the input injection area.
GeneralTransform injectArea =
ContainerInject.TransformToVisual(Window.Current.Content);
// Get the top left screen coordinates of the input injection area.
Point injectAreaTopLeft = injectArea.TransformPoint(new Point(0, 0));
// Get the screen coordinates (relative to the input area)
// of the input pointer.
int pointerPointX = (int)pointerPoint.Position.X;
int pointerPointY = (int)pointerPoint.Position.Y;
// Create the point for input injection and calculate its screen location.
Point injectionPoint =
new Point(
appBoundsTopLeft.X + injectAreaTopLeft.X + pointerPointX,
appBoundsTopLeft.Y + injectAreaTopLeft.Y + pointerPointY);
// Create a touch data point for pointer down.
// Each element in the touch data list represents a single touch contact.
// For this example, we're mirroring a single mouse pointer.
List<InjectedInputTouchInfo> touchData =
new List<InjectedInputTouchInfo>
{
new InjectedInputTouchInfo
{
Contact = new InjectedInputRectangle
{
Left = 30, Top = 30, Bottom = 30, Right = 30
},
PointerInfo = new InjectedInputPointerInfo
{
PointerId = pointerId,
PointerOptions =
InjectedInputPointerOptions.PointerDown |
InjectedInputPointerOptions.InContact |
InjectedInputPointerOptions.New,
TimeOffsetInMilliseconds = 0,
PixelLocation = new InjectedInputPoint
{
PositionX = (int)injectionPoint.X ,
PositionY = (int)injectionPoint.Y
}
},
Pressure = 1.0,
TouchParameters =
InjectedInputTouchParameters.Pressure |
InjectedInputTouchParameters.Contact
}
};
// Inject the touch input.
_inputInjector.InjectTouchInput(touchData);
// Create a touch data point for pointer up.
touchData = new List<InjectedInputTouchInfo>
{
new InjectedInputTouchInfo
{
PointerInfo = new InjectedInputPointerInfo
{
PointerId = pointerId,
PointerOptions = InjectedInputPointerOptions.PointerUp
}
}
};
// Inject the touch input.
_inputInjector.InjectTouchInput(touchData);
}
}
Voici quelques exemples téléchargeables illustrant l’entrée de base et l’injection d’entrée :
- Exemple d’injection d’entrée (souris tactile)
- Exemple d’injection tactile
- Entrée : exemple d’événements d’entrée utilisateur XAML
Remarques
L’utilisation de l’injection d’entrée nécessite l’ajout des éléments suivants au package.appxmanifest :
- À
<Package>
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="rescap"
- À
<Capabilities>
<rescap:Capability Name="inputInjectionBrokered" />