Windows.UI.Input.Preview.Injection 네임스페이스
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
클래스
InjectedInputGamepadInfo |
프로그래밍 방식으로 생성된 게임 패드 입력을 나타냅니다. |
InjectedInputKeyboardInfo |
Tab 또는 Shift+Tab(역방향 탭)과 같이 프로그래밍 방식으로 생성된 키보드 입력을 나타냅니다. |
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 개체를 인스턴스화합니다.
그런 다음 InitializeTouchInjection을 Default
의 InjectedInputVisualizationMode로 호출합니다.
삽입 지점을 계산한 후 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" />