0

私は持っている

DWORD dwThreadID = GetCurrentThreadId();
HKL hCurKeyboard = GetKeyboardLayout(dwThreadID);

それはHKLの現在のキーボードを返します私はそれをいくつかの文字と比較する必要があります

char defaultLanguage[64]="0x04090409";

HKLhCurKeyboardと比較するにはどうすればよいですかdefaultLanguage

または、この値でHKLを作成するにはどうすればよいですか"0x04090409"

        char defaultLanguageLayout[64] = "0x04090409";
        DWORD dwThreadID = GetCurrentThreadId();
        HKL hCurKeyboard = GetKeyboardLayout(dwThreadID);
//->>       if(hCurKeyboard!=defaultLanguageLayout) 
        {

            UINT i;
            HKL hklCurrent;
            UINT uLayouts;
            HKL * lpList;

            uLayouts = GetKeyboardLayoutList(0, NULL);
            lpList = (HKL*) malloc(uLayouts * sizeof(HKL));
            uLayouts = GetKeyboardLayoutList(uLayouts, lpList);

            for(i=0; i<uLayouts; i++)
            {
                hklCurrent = *(lpList + i);

//->>               if(hklCurrent == defaultLanguageLayout){
                    ActivateKeyboardLayout(hklCurrent, 0);
                }
            }

前もって感謝します。

4

1 に答える 1

1

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646305(v=vs.85).aspxによると、最善の方法は次のようなものです。

    HKL defaultLanguageLayout = LoadKeyboardLayout("0x04090409", KLF_SUBSTITUTE_OK);
    DWORD dwThreadID = GetCurrentThreadId();
    HKL hCurKeyboard = GetKeyboardLayout(dwThreadID);
    if(hCurKeyboard!=defaultLanguageLayout) {

しかし、2番目のパラメーターが正しいかどうかを知るのに十分なキーボードレイアウトを理解していません。

于 2012-06-08T17:12:57.727 に答える