Você pode criar o script Autoit para "ignorar" o idioma "C" quando mudar o idioma do teclado.
Após instalar Autoit e Editor . Clique com o botão direito do mouse na área de trabalho > New- > Autoit Script. Clique com o botão direito nesse arquivo criado - > Edit. Agora você deve ver a janela Scite e depois da linha "Adicione seu código abaixo aqui" adicione este código:
#include <WinAPISys.au3>
ClipPut(_WinAPI_GetKeyboardLayout(ControlGetHandle("[ACTIVE]","","")))
Pressione SHIFT + ALT (ou quais hotkeys registradas para alternar o idioma do teclado) até que seu idioma atual seja "C" (se o nome do teclado não aparecer na barra de tarefas, pressione Win + R - > > CTFMON.EXE - & gt ; > Enter) e, na janela ScITE, pressione Ferramentas- > Ir. Agora na sua área de transferência Código de linguagem "C". Cole (CTRL + V) e salve em algum lugar.
Remova o código anterior e cole isto:
#include <WindowsConstants.au3> #include <WinAPISys.au3> #include <String.au3> #NoTrayIcon $skiplang="0x04090409" ;skip this language when switch language $list=_WinAPI_GetKeyboardLayoutList ( ) $fakeforwardlang="" If IsArray($list) Then if $list[0]<3 then Exit; you potato For $i = 1 To $list[0] if $list[$i]=$skiplang Then;find next lang if $i=$list[0] then $fakeforwardlang=$list[1] ExitLoop EndIf $fakeforwardlang=$list[$i+1] ExitLoop EndIf Next Else Exit EndIf $fakeforwardlang=StringMid($fakeforwardlang,1,6) while 1 $handle=ControlGetHandle("[ACTIVE]","","") if getcurkb($handle)=$skiplang then _WinAPI_SetKeyboardLayout($handle, $fakeforwardlang) Sleep(100) wend Func getcurkb($handle) Return _WinAPI_GetKeyboardLayout($handle) EndFunc
Para a próxima etapa, é necessário substituir o código "C" do idioma salvo por 0x04090409 neste script (5 linhas).
Em seguida, na janela do SciTE, pressione Ferramentas- > Construir. Agora você obterá executável no mesmo diretório onde estava o script Autoit. Execute este executável (.exe).
É necessário usar o gerenciador de tarefas para o processo kill se quiser interromper o script.
Funciona no Windows 7 com 3 idiomas de teclado e UAC desativado.
Atualização:
Eu estraguei tudo. _WinAPI_SetKeyboardLayout Encaminhar o trabalho apenas às vezes. Padrão envia muito buggy quando a tecla {down} é pressionada. Solução atual baseada em função externa. Mas um problema com esta função você precisa unpress shift e alt para mudar para o próximo idioma do teclado. Deve verificar novamente o código mais tarde.
Update2:
Voltar para _WinAPI_SetKeyboardLayout, mas usando a frente falsa. Não consigo encontrar nenhum problema agora.