InputInjector를 이용해 WinUi 앱으로 마우스 버튼 가상 클릭하기

윈도우즈 api를 이용하지 않고 부드럽게 WinUi 앱으로 마우스 버튼을 가상으로 클릭하게 할 수 있다.

unpackaged administrator로만 가능하다.

project > properties > application > packaging > msix packaging uncheck
app.manifest

<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
Package.appxmanifest

<Package
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="rescap">

  <Capabilities>
    <rescap:Capability Name="inputInjectionBrokered" />
  </Capabilities>
</Package>
using Windows.UI.Input.Preview.Injection;

void ClickMouseLeftButton()
{
    InputInjector injector = InputInjector.TryCreate();

    InjectedInputMouseInfo down = new() { MouseOptions = InjectedInputMouseOptions.LeftDown };
    InjectedInputMouseInfo up = new() { MouseOptions = InjectedInputMouseOptions.LeftUp };

    injector.InjectMouseInput([down, up]);
}