gpt4 book ai didi

c# - 如何使用 c# 发送 (keybd_event) Unicode 键

转载 作者:太空狗 更新时间:2023-10-30 01:17:31 41 4
gpt4 key购买 nike

如何将所有 Unicode key 发送到“keybd_event”。 . ?

我在下面找到了'Alt + Unicode(Decimal code)'方法和C++代码

但是,我在 c# 中尝试失败了。 .

void TypingMessageFromCodePage(TCHAR* Message, UINT CodePage=0)
{
TCHAR Word[2];
TCHAR WordCode[64];
char MultiByte[64];

static const BYTE NumCode[10]={0x2D, 0x23, 0x28, 0x22, 0x25, 0x0C, 0x27, 0x24, 0x26, 0x21};
int Length = wcslen(Message);

for(int i=0; i<Length; i++)
{
Word[0] = Message[i];
Word[1] = L'\0';

WideCharToMultiByte(CodePage, 0, Word, -1, MultiByte, 64, NULL, NULL);
_itow((int)(((~MultiByte[0])^0xff)<<8)+((~MultiByte[1])^0xff), WordCode, 10);

keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);

for(int j=0; j<wcslen(WordCode); j++)
{
keybd_event(NumCode[(int)WordCode[j]-48], MapVirtualKey(NumCode[(int)WordCode[j]-48], 0), 0, 0);
keybd_event(NumCode[(int)WordCode[j]-48], MapVirtualKey(NumCode[(int)WordCode[j]-48], 0), KEYEVENTF_KEYUP, 0);
}
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);
}
}

最佳答案

不要使用 keybd_event()。使用 SendInput()反而。为此,它有一个 KEYEVENTF_UNICODE 标志。您可以使用它发送实际的 UTF-16 代码单元(.NET String 中的每个 char 都被编码为 UTF-16 代码单元)。根本不需要模拟 Alt+xxxx 代码。例如:

https://stackoverflow.com/a/30630477/65863

https://stackoverflow.com/a/15442914/65863

https://stackoverflow.com/a/8885228/65863

关于c# - 如何使用 c# 发送 (keybd_event) Unicode 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31370634/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com