最新的Windows 10主要更新,“秋季创建者更新”(AKA RedStone3),具有可在任何文本框中使用的添加了系统范围内的表情弹出功能。。
我试着制作一个程序,当我点击一个按钮时,它会启动相同的弹出表情窗口。正如另一次讨论中关于类似主题的建议,我尝试使用InputSimulator项目。还有其他方法,如建议的这里,但似乎模拟器包装得很好。
我所做的就是创建一个新的小WPF应用程序,其中有一个主窗口,其中有一个TextBox和一个按钮。按下按钮将运行以下代码:
textBox.Focus()
new InputSimulator().Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.OEM_PERIOD);这似乎没有任何影响!我也尝试过OEM_1 (即":;“键代码)而不是OEM_PERIOD,但仍然没有成功。问题是,LWIN与另一个键(如VK_P)的任何其他组合都可以使用同一个模拟器的代码。
如果我试图在真正的键盘上按下Emoji热键,在运行该代码之后,第一个按键什么也不做(有时表情符号弹出显示半秒钟后消失),然后需要再次按热键,以便弹出窗口显示。这让我怀疑,弹出窗口可能只显示在屏幕边界之外,还是在等待另一个键盘事件发生/结束?
发布于 2020-12-23 19:13:05
在Windows窗体或WPF应用程序中打开Emoji面板
您需要处理所需的事件,然后首先将Focus传递给您的控件,然后使用CoreInputView.GetForCurrentView获取当前窗口的核心输入视图,然后调用其TryShow方法并将CoreInputViewKind.Emoji传递给该方法。例如:
//using Windows.UI.ViewManagement.Core;
private async void button1_Click(object sender, EventArgs e)
{
textBox1.Focus();
CoreInputView.GetForCurrentView().TryShow(CoreInputViewKind.Emoji);
}备注: For Windows窗体或WPF项目,在使用上述代码之前,需要将项目配置为能够在桌面应用程序中调用Windows运行时API。
在Windows窗体或WPF中调用Windows运行时API
.NET 5
TargetFramework的值更改为以下字符串之一并保存更改。- `net5.0-windows10.0.17763.0`: for targeting Windows 10, version 1809.
- `net5.0-windows10.0.18362.0`: for targeting Windows 10, version 1903.
- `net5.0-windows10.0.19041.0`: for targeting Windows 10, version 2004.例如:
WinExe net5.0-窗口10.0.18362.0真
.NET 4.X
Microsoft.Windows.SDK.Contracts包。在“NuGet软件包管理器”窗口的右侧窗格中,根据要针对的Windows10版本选择所需的软件包版本,然后单击“安装”:- `10.0.19041.xxxx`: for targeting Windows 10, version 2004.
- `10.0.18362.xxxx`: for targeting Windows 10, version 1903.
- `10.0.17763.xxxx`: for targeting Windows 10, version 1809.
- `10.0.17134.xxxx`: for targeting Windows 10, version 1803.发布于 2021-02-13 22:32:53
由于无法让这些更优雅的解决方案发挥作用,我只好求助于键盘呼叫。这很适合我的需要,所以我想我可以分享。
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As IntPtr, ByVal bScan As IntPtr, ByVal dwFlags As IntPtr, ByVal dwExtraInfo As IntPtr)
Private Sub EmojiLaunch_Click(sender As Object, e As EventArgs) Handles EmojiLaunch.Click
Call keybd_event(&H5B, 0, &H0, 0) 'Windows Key Down
Call keybd_event(&HBE, 0, &H0, 0) 'Period Key Down
Call keybd_event(&HBE, 0, &H2, 0) 'Period Key Up
Call keybd_event(&H5B, 0, &H2, 0) 'Windows Key Up
End SubEmojiLaunch是一个标签,您不想使用按钮,因为它会改变焦点。
https://stackoverflow.com/questions/46962262
复制相似问题