韩文布局有字母模式和韩文模式。
我只需要韩文布局中的韩文模式。为了抑制字母模式,我编写了这段代码,但我找不到获取当前 IME 模式的方法。我可以使用哪个Windows API来实现
checkKoreanInputMode()
功能?
#include <Windows.h>
#include <iostream>
#include <thread>
bool checkKoreanInputMode() {
// check current IME layout and mode
}
void setKoreanInputMode() {
keybd_event(VK_HANGUL, 0, 0, 0);
keybd_event(VK_HANGUL, 0, KEYEVENTF_KEYUP, 0);
}
int main() {
while (true) {
if (!checkKoreanInputMode()) {
std::cout << "Switching to Korean input mode." << std::endl;
setKoreanInputMode();
}
std::this_thread::sleep_for(std::chrono::seconds(1));
}
return 0;
}
我发现了一个名为
ImmGetConversionStatus
的函数,其中
检索当前转换状态。
不幸的是,我找不到任何名为“hangul”的参数,但有一个名为“hanja”的参数。我不会说韩语,所以我不知道它是否相同。 以下是来源:
函数本身: https://learn.microsoft.com/en-us/windows/win32/api/imm/nf-imm-immgetcontext
获取当前IME上下文的函数(需要
HWND
):https://learn.microsoft.com/en-us/windows/win32/api/imm/nf-imm-immgetcontext
获取当前IME上下文的函数:https://learn.microsoft.com/en-us/windows/win32/api/imm/nf-imm-immgetcontext
这对我来说有点太复杂了,但您也许可以在这里找到更简单的解决方案: https://learn.microsoft.com/en-us/windows/win32/api/imm/nf-imm-immgetcontext
希望能帮到你,抱歉这么大的回复。