Что нового

[Мышь, клавиатура] send(), проблемма с кирилицей

drnet

Новичок
Сообщения
3
Репутация
0
возникла проблема с send(), при посылке в окно не получаю ожидаемый результат :(

Код:
WinWaitActive("Безымянный — Блокнот")
send("Абра-кадабра")

реальная ХП - вроде пробелы (что именно не проверял)

ХП под виртуал-боксом - вроде все ок

Вин7, блокнот:

если есть в ФАК-е - ткните носом.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Все нормально. Windows 7
Код:
Run("notepad.exe")
Sleep(1000)
WinWaitActive("Безымянный — Блокнот")
send("Абра-кадабра")


Все вставляет. Язык клавиатуры какой стоит?

OffTopic:
P.S. Долго соображал что такое "ХП" потом дошло что это Windows XP, поэтому чуть чуть яснее нужно писать
 
Автор
D

drnet

Новичок
Сообщения
3
Репутация
0
:smile: про ХП, улыбнуло. исправлюсь

во всех случаях стоит English, или неизвестно что.

как я понял копаем в сторону GetKeyboardLayout, SetKeyboardLayout, иначе никак?




Добавлено:
Сообщение автоматически объединено:

Код:
WinWaitActive("Безымянный — Блокнот")

;установка режима поиска окон по указателям (Advanced mode)
Opt("WinTitleMatchMode",4)
;получение указателя (уникального идентификатора) окна с именем класса "Notepad" и запись его в переменную $hWnd
$hWnd = WinGetHandle("classname=Notepad")
;переключение раскладки в окне, определяемом указателем $hWnd
_SetKeyboardLayout("00000419", $hWnd)
send("по русски")
_SetKeyboardLayout("00000409", $hWnd)
send("In English")

Func _SetKeyboardLayout($sLayoutID, $hWnd)
Local $WM_INPUTLANGCHANGEREQUEST = 0x50
Local $ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", $sLayoutID, "int", 0)
DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $hWnd, "int", $WM_INPUTLANGCHANGEREQUEST, "int", 1, "int", $ret[0])
EndFunc
Exit
#cs
Дополнительные языки.

"00000407" Немецкий (стандартный)
"00000409" Английский (США)
"0000040C" Французский (стандартный)
"0000040D" Финский
"00000410" Итальянский
"00000415" Польский
"00000419" Русский
"00000422" Украинский
"00000423" Белорусский
"00000425" Эстонский
"00000426" Латвийский
"00000427" Литовский
#ce

(с) http://www.oszone.net/display.php?id=3663
 
Автор
D

drnet

Новичок
Сообщения
3
Репутация
0
способ скажем так...через Ж..клипборд...а если там битмапа например? была...

в моем случае проблем как выяснилось две:

- главный трабл - chr вместо chrW!! :whistle:

- "жертва" не совсем корректно понимает русские буквы при "SendKeyDelay"<30, вылазят символы первого байта(пики, трефы) :smile:)
 
Верх