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
确保为默认程序包管理格式选择了PackageReference。
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。