Windows.UI.Input.Preview.Injection Spazio dei nomi
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce supporto per la generazione e l'automazione dell'input a livello di codice da un'ampia gamma di dispositivi, ad esempio tastiera, mouse, tocco, penna e gamepad.
Importante
Le API in questo spazio dei nomi richiedono la funzionalità con restrizioni inputChangectionBrokered.
Classi
InjectedInputGamepadInfo |
Rappresenta l'input del gamepad generato a livello di codice. |
InjectedInputKeyboardInfo |
Rappresenta l'input della tastiera generato a livello di codice, ad esempio una scheda o maiusc+tabulazione (tabulazione inversa). |
InjectedInputMouseInfo |
Rappresenta l'input del mouse generato a livello di codice. |
InjectedInputPenInfo |
Rappresenta l'input penna generato a livello di codice. |
InjectedInputTouchInfo |
Rappresenta l'input tocco generato a livello di codice. |
InputInjector |
Rappresenta il dispositivo di input virtuale per l'invio dei dati di input. |
Struct
InjectedInputPoint |
Contiene le coordinate dello schermo del puntatore in pixel indipendenti dal dispositivo (DIP). |
InjectedInputPointerInfo |
Contiene informazioni sul puntatore di base comuni a tutti i tipi di puntatore. |
InjectedInputRectangle |
Gli offset, dal puntatore inserito, per il rettangolo di selezione che rappresenta l'area del contatto tocco. |
Enumerazioni
InjectedInputButtonChangeKind |
Specifica le modifiche nello stato di un pulsante associato a un puntatore. |
InjectedInputKeyOptions |
Specifica le varie opzioni o modificatori usati per simulare l'input da tastiere fisiche o virtuali tramite InjectedInputKeyboardInfo. |
InjectedInputMouseOptions |
Specifica le varie opzioni o modificatori usati per simulare l'input del mouse tramite InjectedInputMouseInfo. |
InjectedInputPenButtons |
Specifica le opzioni della penna usate per simulare l'input penna tramite InjectedInputPenInfo. |
InjectedInputPenParameters |
Specifica gli stati della penna usati per simulare l'input penna tramite InjectedInputPenInfo. |
InjectedInputPointerOptions |
Specifica le varie opzioni o modificatori usati per simulare l'input del puntatore tramite InjectedInputMouseInfo, InjectedInputPenInfo e InjectedInputTouchInfo. |
InjectedInputShortcut |
Specifica i collegamenti di sistema per InjectShortcut. |
InjectedInputTouchParameters |
Specifica gli stati di tocco usati per simulare l'input tocco tramite InjectedInputTouchInfo. |
InjectedInputVisualizationMode |
Specifica il tipo di feedback visivo visualizzato per il tipo di input inserito. |
Esempio
Ecco un esempio di funzione di inserimento dell'input tocco.
Prima di tutto, si chiama TryCreate per creare un'istanza dell'oggetto InputOptionector .
Viene quindi chiamato InitializeTouchSignection con un oggetto InjectedInputVisualizationMode di Default
.
Dopo aver calcolato il punto di inserimento, chiamiamo InjectInputTouchInfo per inizializzare l'elenco dei punti di tocco da inserire (ad esempio, creiamo un punto di tocco corrispondente al puntatore di input del mouse).
Infine, chiamiamo InjectTouchInput due volte, il primo per un puntatore verso il basso e il secondo per un puntatore verso l'alto.
/// <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);
}
}
Ecco alcuni esempi scaricabili che illustrano l'input di base e l'inserimento di input:
- Esempio di inserimento di input (mouse da toccare)
- Esempio di inserimento tocco
- Input: Esempio di eventi di input utente XAML
Commenti
L'uso dell'inserimento di input richiede l'aggiunta seguente al Package.appxmanifest:
- A
<Package>
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="rescap"
- A
<Capabilities>
<rescap:Capability Name="inputInjectionBrokered" />