Что нового

Программа для транслитерации

russiansoul

Новичок
Сообщения
2
Репутация
0
Здравствуйте уважаемые форумчане
хочу написать программу для автоматической замены букв если раскладка английская и чтоб учитывала регистры
например:
Код:
$dll = DllOpen("user32.dll")
while 1
Local $eng[7]=['q','w','e','r','t','y','u,']
Local $rus[7]=['й','ц','у','к','е','н','г']
Local $hex[7]=['51','57','45','52','54','59','55']
for $i=0 to 6
If _IsPressed($hex[$i],$dll) Then
Consolewrite(,$eng[$i])
If @KBLayout=0419 Then
If _IsPressed($hex[$i],$dll) Then
Consolewrite(,$rus[$i])
		EndIf
		While _IsPressed($hex[$i]) = 1
		WEnd
next
WEnd
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Непонятно, при чём тут транслитерация...
Вот примерно то, что вы хотели изобразить
Код:
#include <Misc.au3>
#include <WinAPISys.au3>

$dll = DllOpen("user32.dll")

Global $eng[7] = ['q' , 'w' , 'e' , 'r' , 't' , 'y' , 'u' ]
Global $rus[7] = ['й' , 'ц' , 'у' , 'к' , 'е' , 'н' , 'г' ]
Global $hex[7] = ['51', '57', '45', '52', '54', '59', '55']

While Sleep(10)
  For $i = 0 To 6
    If _IsPressed($hex[$i], $dll) Then
      Switch _WinAPI_GetKeyboardLayout(WinGetHandle("[active]"))
        Case 0x04090409
          ConsoleWrite($eng[$i])
        Case 0x04190419
          ConsoleWrite($rus[$i])
        Case Else
          ConsoleWrite("?")
      EndSwitch
      While _IsPressed($hex[$i])
      WEnd
    EndIf
  Next
WEnd
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
А вот и мое детище, правда, писал давно, но пользуюсь по сей день :smile:
LngSwitcher
Исходники тут: *скачать*
 
Верх