我已经在我的C#uwp应用程序中实现了启动屏幕剪辑工具,它在Windows 10操作系统中运行良好.预期的行为是达到就像我们按下组合窗口+转移+ s一样的状态.

这是我的命令正文:

bool result = await Launcher.LaunchUriAsync(new Uri("ms- 
screenclip:edit?source=SOURCE"));

 if (result)
 {
     Clipboard.ContentChanged += Screenshot_Succeeded;
 }

在Windows 11操作系统中,同样的实现只是启动剪切工具,我需要点击新的屏幕截图才能达到同样的状态.

所以主要问题是scenclip在win 11中充当scensketch.

是否有可能达到与Windows 10相同的功能?

推荐答案

你能帮助我如何才能获得与win 10操作系统相同的功能吗?

一个解决办法是,您可以try 从代码中注入组合的关键输入,这样您就可以直接启动剪切功能,就像Windows 10中的旧行为一样.

在开始使用InputInjector Class之前,我们需要首先将inputInjectionBrokered限制功能添加到 list 文件中.

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

而在Capabilities名 Select 中

<Capabilities>
  <Capability Name="internetClient" />
  <rescap:Capability Name="inputInjectionBrokered" />
</Capabilities>

然后可以使用以下代码注入键盘输入,直接启动剪切功能.

  private  void Button_Click(object sender, RoutedEventArgs e)
    {
        //press key
        InputInjector inputInjector = InputInjector.TryCreate();

        var shift = new InjectedInputKeyboardInfo();
        shift.VirtualKey = (ushort)(VirtualKey.Shift);
        shift.KeyOptions = InjectedInputKeyOptions.ExtendedKey;


        var win = new InjectedInputKeyboardInfo();
        win.VirtualKey = (ushort)(VirtualKey.LeftWindows);
        win.KeyOptions = InjectedInputKeyOptions.ExtendedKey;


        var skey = new InjectedInputKeyboardInfo();
        skey.VirtualKey = (ushort)(VirtualKey.S);
        skey.KeyOptions = InjectedInputKeyOptions.None;


        inputInjector.InjectKeyboardInput(new[] { shift, win,skey });

        // release shift and win key
        shift.KeyOptions = InjectedInputKeyOptions.KeyUp;
        win.KeyOptions = InjectedInputKeyOptions.KeyUp;
        inputInjector.InjectKeyboardInput(new[] { shift, win });


        //bool result = await Launcher.LaunchUriAsync(new Uri("ms-screenclip: edit ? source = SOURCE"));
    }

Csharp相关问答推荐

获取Windows和Linux上的下载文件夹

无法使用ternal- .net修复可空警告

如何使用C#和Graph API从Azure Directory获取用户详细信息

WPF Windows初始化正在锁定. Net 8中分离的线程

Azure Redis缓存与Entra ID身份验证

MongoDB.NET-将数据绑定到模型类,但无法读取整数值

在静态模式下实例化配置

使用泛型可空类实现接口

try 在.Net核心身份注册页面中使用AJAX,但没有成功..NET Core 5.0 Razor页面应用程序

在swagger示例中添加默认数组列表

避免只读记录 struct 中的防御副本

使用C#和.NET 7.0无法访问Cookie中的数据

当try 测试具有协变返回类型的抽象属性时,类似功能引发System.ArgumentException

C#LINQ延迟执行和嵌套方法

在.NET8中如何反序列化为私有字段?

Visual Studio如何使用当前的框架?

并发表更新.EF核心交易

try 访问字典中的模拟对象时引发KeyNotFoundException

如何处理ASP.NET Core中包含两个构造函数的控制器?

如何在flutter dart中使用publicKey.xml文件进行rsa加密,我遇到了问题Exception:Could not parse BigInt