Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Узнать наличие локали


Автор: insidex 4.10.2009, 19:58
Господа, подскажите как можно узнать, есть ли у пользователя в панели переключения языков указанный язык ?

С помощью msdn дошел до следующего:

Код

int is_Arab(){
    TCHAR tbuf[512];
    HKL hRet;
    wsprintf(tbuf,L"%X",MAKELANGID(LANG_THAI,SUBLANG_DEFAULT) ) ;
    wprintf(L"TBUF: %s ",tbuf);

    hRet = LoadKeyboardLayout(tbuf, 0);
    if(hRet == NULL){ // не ловит
        printf("Err");
    }
    if(ActivateKeyboardLayout(hRet,0) == 0){ // не ловит
        printf("Err2");
    }
    printf("D: %d", GetLastError()); // пусто

    return 1;
}




Автор: smoke_man 4.10.2009, 20:46
Попробуй так:
Код

    int CountHKL  = GetKeyboardLayoutList(0,NULL);
    HKL *hkl = new HKL[CountHKL];
    GetKeyboardLayoutList(CountHKL,hkl);
    for(int i = 0; i<CountHKL;i++)
    {
        if(((WORD)hkl[i] & 0xff) == LANG_RUSSIAN)
            std::cout << "Russian exist"<<std::endl;
    }
    delete [] hkl;

Автор: insidex 4.10.2009, 21:02
smoke_man, 
Спасибо, работает !

Автор: smoke_man 4.10.2009, 21:09
Не за что!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)