Windows 10的最新主要更新“Fall Creators Update”(又名RedStone3)具有added the functionality of a system-wide emoji pop-up,可在任何文本框中使用。

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

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

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

这似乎没有影响!我还尝试了OEM_1(即“:;”键代码)而不是OEM_PERIOD,但还是没有运气。关键是,LWIN与其他键(例如VK_P)的任何其他组合都可以使用相同的模拟器代码。

如果我尝试按真实键盘上的Emoji热键,则在运行该代码后,第一次按不执行任何操作(有时Emoji pop 窗口显示半秒钟,然后立即消失),然后需要再次按该热键显示的 pop 窗口。这使我怀疑 pop 窗口是否仅在屏幕范围之外才显示,或者是否正在等待另一个键盘事件发生/结束?

最佳答案

在Windows Forms或WPF应用程序中打开Emoji面板
您需要处理所需的事件,然后将 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);
}

在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。
  • 解决方案资源管理器→右键单击您的项目→选择Manage NuGet Packages。
  • 查找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。

  • 07-24 09:39
    查看更多