如何获取当前IME输入模式

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

韩文布局有字母模式和韩文模式。

enter image description here enter image description here

我只需要韩文布局中的韩文模式。为了抑制字母模式,我编写了这段代码,但我找不到获取当前 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;
}
c++ winapi ime
1个回答
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

希望能帮到你,抱歉这么大的回复。

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