c# - 以编程方式启动 Windows 10 表情符号热键

标签 c# wpf winforms input emoji

Windows 10 的最新主要更新“秋季创意者更新”(又名 RedStone3)具有 added the functionality of a system-wide emoji pop-up可以在任何文本框中使用。

我正在尝试制作一个程序,当单击按钮时会启动相同的弹出表情符号窗口。正如 another discussion 中所建议的关于类似的话题,我尝试使用 InputSimulator项目。还有其他方式,建议here ,但似乎那个模拟器很好地包装了它们。

我所做的只是创建一个新的小型 WPF 应用程序,其中有一个主窗口,其中包含一个 TextBox 和一个按钮。按下按钮将运行以下代码:

textBox.Focus()
new InputSimulator().Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.OEM_PERIOD);

这似乎没有影响!我也试过 OEM_1(它是“:;”键码)而不是 OEM_PERIOD,但仍然没有运气。问题是,LWIN 与另一个键(例如 VK_P)的任何其他组合都可以使用相同的模拟器代码。

如果我尝试按下真实键盘上的表情符号热键,在运行该代码后,第一次按下什么都不做(有时表情符号弹出窗口会显示半秒钟,然后立即消失),然后需要再次按顺序按下热键用于显示弹出窗口。这让我怀疑弹出窗口是否显示,仅在屏幕边界之外,或者等待另一个键盘事件发生/完成?

最佳答案

在 Windows 窗体或 WPF 应用程序中打开表情符号面板
您需要处理所需的事件,然后首先 Focus 到您的控制,然后使用 CoreInputView.GetForCurrentView 获取当前窗口的核心输入 View ,然后调用它的 TryShow 方法和通行证 CoreInputViewKind.Emoji 到方法。例如:

//using Windows.UI.ViewManagement.Core;
private async void button1_Click(object sender, EventArgs e)
{
    textBox1.Focus();
    CoreInputView.GetForCurrentView().TryShow(CoreInputViewKind.Emoji);
}

Note: For Windows Forms or WPF project, before using above code, you need to configure your project to be able to call Windows Runtime APIs in desktop apps.


在 Windows 窗体或 WPF 中调用 Windows 运行时 API
.NET 5
  • 解决方案资源管理器 → 右键单击​​您的项目 → 选择编辑项目文件。
  • 更改 TargetFramework 的值到以下字符串之一并保存更改。
  • net5.0-windows10.0.17763.0 :针对 Windows 10 版本 1809。
  • net5.0-windows10.0.18362.0 :针对 Windows 10 版本 1903。
  • net5.0-windows10.0.19041.0 :针对 Windows 10,版本 2004。

  • 例如:
    <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net5.0-windows10.0.18362.0</TargetFramework>
        <UseWindowsForms>true</UseWindowsForms>
      </PropertyGroup>
    </Project>
    

    .NET 4.X
  • 工具 → NuGet 包管理器 → 包管理器设置 →
    确保为默认包管理格式选择了 PackageReference。
  • 解决方案资源管理器 → 右键单击​​您的项目 → 选择管理 NuGet 包。
  • 查找 Microsoft.Windows.SDK.Contracts包裹。在 NuGet 包管理器窗口的右 Pane 中,根据要定位的 Windows 10 版本选择所需版本的包,然后单击安装:
  • 10.0.19041.xxxx :针对 Windows 10,版本 2004。
  • 10.0.18362.xxxx :针对 Windows 10 版本 1903。
  • 10.0.17763.xxxx :针对 Windows 10 版本 1809。
  • 10.0.17134.xxxx :针对 Windows 10 版本 1803。

  • 关于c# - 以编程方式启动 Windows 10 表情符号热键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46962262/

    相关文章:

    c# - 使用 Thread.Sleep,同时使用程序

    c# - 在 DataGridView 上移动行时的可视标记

    c# - 如何在 C# 中从 Oracle SQL Developer 检索 'Other Users' 的列表?

    c# - SSIS - 文件存在性检查未正确控制包任务流

    c# - 如何在 wpf 中刷新窗口?

    c# - 数据绑定(bind)到异构列表

    C# ListView.Columns.Add 的参数

    c# - PDF表: last cell is not visible

    c# - 与 ASP.net 中的 GridView 相关的问题

    c# - WPF DataGrid 行/列/单元格突出显示