thejustsoul
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Lovec Цитата: Попробуйте такой код: Код: Run('notepad.exe') $hWnd = WinWait("[CLASS:Notepad]", "", 5) $def_lang = GetCurrentLayout($hWnd) ; запоминаем текущую раскладку if GetDefaultLayout() = 1 Then SetCurrentLayout('0419', $hWnd) ; если раскладка по умолчанию русская, то ставим текущую русскую Else SetCurrentLayout('0409', $hWnd) ; иначе - ставим английскую EndIf ControlSend($hWnd, "", "Edit1", "Эта строка выслана в элемент Edit") SetCurrentLayout($def_lang, $hWnd) ; возвращаем раскладку до махинаций Func GetCurrentLayout($hWnd) Local $Ret = DllCall('user32.dll', 'long', 'GetWindowThreadProcessId', 'hwnd', $hWnd, 'ptr', 0) $Ret = DllCall('user32.dll', 'long', 'GetKeyboardLayout', 'long', $Ret[0]) Return Hex($Ret[0], 4) EndFunc Func GetDefaultLayout() If @KBLayout = 00000419 Or @KBLayout = 0419 Then Return 1 If @KBLayout = 00000409 Or @KBLayout = 0409 Or @KBLayout = 0809 Or @KBLayout = 00000809 Then Return 0 EndFunc Func SetCurrentLayout($sLayout, $hWnd) Local $Ret = DllCall('user32.dll', 'long', 'LoadKeyboardLayout', 'str', StringFormat('%08s', StringStripWS($sLayout, 8)), 'int', 0) DllCall('user32.dll', 'ptr', 'SendMessage', 'hwnd', $hWnd, 'int', 0x0050, 'int', 1, 'int', $Ret[0]) EndFunc | Взято отсюда Еще можно так (заменит текст в Edit1): Код: Run('notepad.exe') ; Устанавливает текст в элемент, заменяя текущий ControlSetText("[CLASS:Notepad]", "", "Edit1", "Новый текст уставленный в элемент Edit") | P.S. Подскажите как покрасить код AutoIt наименьшими усилиями (в BBCode), а то утилита из шапки не работает у меня, хотя раньше работала.. upd: добавил подсветку кода |