Windows.UI.Input.Preview.Injection 命名空間
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
類別
InjectedInputGamepadInfo |
表示以程式設計方式產生的遊戲台輸入。 |
InjectedInputKeyboardInfo |
表示以程式設計方式產生的鍵盤輸入,例如 Tab 或 Shift+Tab (反向 Tabbing) 。 |
InjectedInputMouseInfo |
表示以程式設計方式產生的滑鼠輸入。 |
InjectedInputPenInfo |
表示以程式設計方式產生的手寫筆輸入。 |
InjectedInputTouchInfo |
表示以程式設計方式產生的觸控輸入。 |
InputInjector |
表示用來傳送輸入資料的虛擬輸入裝置。 |
結構
InjectedInputPoint |
包含與裝置無關圖元的螢幕座標, (DIP) 。 |
InjectedInputPointerInfo |
包含所有指標類型通用的基本指標資訊。 |
InjectedInputRectangle |
代表觸控接觸區域的周框方塊,從插入的指標位移。 |
列舉
InjectedInputButtonChangeKind |
指定與指標相關聯的按鈕狀態變更。 |
InjectedInputKeyOptions |
指定各種選項或修飾詞,用來透過 InjectedInputKeyboardInfo模擬來自實體或虛擬鍵盤的輸入。 |
InjectedInputMouseOptions |
指定用來透過 InjectedInputMouseInfo模擬滑鼠輸入的各種選項或修飾詞。 |
InjectedInputPenButtons |
指定用來透過 InjectedInputPenInfo模擬手寫筆輸入的畫筆選項。 |
InjectedInputPenParameters |
指定用來透過 InjectedInputPenInfo模擬手寫筆輸入的畫筆狀態。 |
InjectedInputPointerOptions |
指定透過InjectedInputMouseInfo、InjectedInputPenInfo 和 InjectedInputTouchInfo模擬指標輸入的各種選項或修飾詞。 |
InjectedInputShortcut |
指定 InjectShortcut的系統快捷方式。 |
InjectedInputTouchParameters |
指定用來透過 InjectedInputTouchInfo模擬觸控輸入的觸控狀態。 |
InjectedInputVisualizationMode |
指定插入輸入類型所顯示的視覺回饋類型。 |
範例
以下是觸控輸入插入函式的範例。
首先,我們呼叫 TryCreate 來起始 InputInjector 物件。
接著,我們使用 Default
的 InjectedInputVisualizationMode 呼叫 InitializeTouchInjection。
在計算插入點之後,我們呼叫 InjectedInputTouchInfo 以初始化要插入的觸控點的清單 (對於此範例,我們建立對應到滑鼠輸入指標的觸控點)。
最後,我們呼叫 InjectTouchInput 兩次,第一次使指標向下移,第二次使指標向上。
/// <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);
}
}
以下是示範基本輸入和輸入插入的一些可下載範例:
備註
使用輸入插入需要將下列專案新增至 Package.appxmanifest:
- 自
<Package>
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="rescap"
- 自
<Capabilities>
<rescap:Capability Name="inputInjectionBrokered" />