Windows.UI.Input.Preview.Injection Namespace
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Bietet Unterstützung für das programmgesteuerte Generieren und Automatisieren von Eingaben von einer Vielzahl von Geräten wie Tastatur, Maus, Toucheingabe, Stift und Gamepad.
Wichtig
Die APIs in diesem Namespace erfordern die eingeschränkte Funktion inputInjectionBrokered.
Klassen
InjectedInputGamepadInfo |
Stellt programmgesteuert generierte Gamepadeingaben dar. |
InjectedInputKeyboardInfo |
Stellt programmgesteuert generierte Tastatureingaben dar, z. B. tab oder UMSCHALT+TAB (Umgekehrtes Tabbing). |
InjectedInputMouseInfo |
Stellt programmgesteuert generierte Mauseingabe dar. |
InjectedInputPenInfo |
Stellt programmgesteuert generierte Stifteingabe dar. |
InjectedInputTouchInfo |
Stellt programmgesteuert generierte Toucheingaben dar. |
InputInjector |
Stellt das virtuelle Eingabegerät zum Senden der Eingabedaten dar. |
Strukturen
InjectedInputPoint |
Enthält die Bildschirmkoordinaten des Zeigers im geräteunabhängigen Pixel (DEVICE-Independent Pixel, DIP). |
InjectedInputPointerInfo |
Enthält grundlegende Zeigerinformationen, die allen Zeigertypen gemeinsam sind. |
InjectedInputRectangle |
Die Offsets aus dem eingefügten Zeiger für das Begrenzungsfeld, das den Touchkontaktbereich darstellt. |
Enumerationen
InjectedInputButtonChangeKind |
Gibt die Statusänderungen einer Schaltfläche an, die einem Zeiger zugeordnet ist. |
InjectedInputKeyOptions |
Gibt die verschiedenen Optionen oder Modifizierer an, die zum Simulieren von Eingaben von physischen oder virtuellen Tastaturen über InjectedInputKeyboardInfo verwendet werden. |
InjectedInputMouseOptions |
Gibt die verschiedenen Optionen oder Modifizierer an, die zum Simulieren der Mauseingabe über InjectedInputMouseInfo verwendet werden. |
InjectedInputPenButtons |
Gibt die Stiftoptionen an, die zum Simulieren der Stifteingabe über InjectedInputPenInfo verwendet werden. |
InjectedInputPenParameters |
Gibt die Stiftzustände an, die zum Simulieren der Stifteingabe über InjectedInputPenInfo verwendet werden. |
InjectedInputPointerOptions |
Gibt die verschiedenen Optionen oder Modifizierer an, die zum Simulieren der Zeigereingabe über InjectedInputMouseInfo, InjectedInputPenInfo und InjectedInputTouchInfo verwendet werden. |
InjectedInputShortcut |
Gibt die Systemverknüpfungen für InjectShortcut an. |
InjectedInputTouchParameters |
Gibt die Touchstatus an, die zum Simulieren der Toucheingabe über InjectedInputTouchInfo verwendet werden. |
InjectedInputVisualizationMode |
Gibt den Typ des visuellen Feedbacks an, das für den eingefügten Eingabetyp angezeigt wird. |
Beispiele
Hier sehen Sie ein Beispiel für eine Toucheingabeeinschleusungsfunktion.
Zunächst rufen wir TryCreate auf, um das InputInjector-Objekt zu instanziieren .
Anschließend rufen wir InitializeTouchInjection mit einem InjectedInputVisualizationMode von auf Default
.
Nach der Berechnung des Einschleusungspunkts rufen wir InjectedInputTouchInfo auf, um die Liste der zu einfügenden Berührungspunkte zu initialisieren (in diesem Beispiel erstellen wir einen Berührungspunkt, der dem Mauseingabezeiger entspricht).
Schließlich rufen wir InjectTouchInput zweimal auf, den ersten für einen Zeiger nach unten und den zweiten für einen Zeiger nach oben.
/// <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);
}
}
Hier finden Sie einige herunterladbare Beispiele, die grundlegende Eingaben und Eingabeeinschleusungen veranschaulichen:
- Eingabeeinschleusungsbeispiel (Maus zur Berührung)
- Beispiel für Fingereingabeeinschleusung
- Eingabe: Beispiel für XAML-Benutzereingabeereignisse
Hinweise
Bei Verwendung der Eingabeeinschleusung muss Dem Package.appxmanifest Folgendes hinzugefügt werden:
- An
<Package>
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="rescap"
- An
<Capabilities>
<rescap:Capability Name="inputInjectionBrokered" />