以编程方式显示 Windows 表情符号面板?

问题描述 投票:0回答:1

在 Windows 10/11 上,可以通过按

WIN+.
键(Windows 键 + 句号键)

来调用 Windows 表情符号面板

我尝试模拟按下这些键:

procedure ShowEmojiPanel;
var
  Inputs: array[0..3] of TInput;
begin
  // Simulate pressing the Windows Key
  ZeroMemory(@Inputs, SizeOf(Inputs));
  Inputs[0].Itype := INPUT_KEYBOARD;
  Inputs[0].ki.wVk := VK_LWIN;

  // Simulate pressing the '.' key
  Inputs[1].Itype := INPUT_KEYBOARD;
  Inputs[1].ki.wVk := Ord('.');

  // Simulate releasing the '.' key
  Inputs[2].Itype := INPUT_KEYBOARD;
  Inputs[2].ki.wVk := Ord('.');
  Inputs[2].ki.dwFlags := KEYEVENTF_KEYUP;

  // Simulate releasing the Windows Key
  Inputs[3].Itype := INPUT_KEYBOARD;
  Inputs[3].ki.wVk := VK_LWIN;
  Inputs[3].ki.dwFlags := KEYEVENTF_KEYUP;

  // Send the inputs
  SendInput(4, Inputs[0], SizeOf(TInput));
end;

procedure ShowEmojiPanel;
begin
  // Press WIN key
  keybd_event(VK_LWIN, 0, 0, 0);

  // Press period (.)
  keybd_event(Ord('.'), 0, 0, 0);

  // Release period (.)
  keybd_event(Ord('.'), 0, KEYEVENTF_KEYUP, 0);

  // Release WIN key
  keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
end;

但是,这些程序似乎都无法打开我的

Windows 11
上的Windows表情符号面板。

是否有另一种方式以编程方式显示 Windows 表情符号面板?

delphi emoji delphi-12-athens windows-key
1个回答
0
投票

如果您指定

SendInput
而不是
VK_OEM_PERIOD
,您的
Ord('.')
方法应该有效。

© www.soinside.com 2019 - 2024. All rights reserved.