Что нового

Смена раскладки в Thunderbird

Дмитрий_DimAs

Новичок
Сообщения
5
Репутация
0
Всем доброго, помогите найти решение. Скрипт помещён в меню пкм, если перед запуском скрипта раскладка стоит в RUS, то на выходе(даже с учетом блока кода смены на ENG) - получаю ерунду вместо ссылки, точнее Ctrl+k даже не срабатывает(независимо от величины Sleep), а всё содержимое переменной вставляется просто в тело сообщения как текст.
Если руками перевести раскладку в ENG, всё отрабатывает отлично.
Ctrl+k это вызов окна создания ссылки в Thunderbird.
Код:
$FolderZ = 'File:///' & StringReplace($CmdLine[1], ' ', '%20') ;~ $CmdLine[1]
If WinExists("Создание сообщения: ~~ - Thunderbird") Then
   WinActivate ("Создание сообщения: ~~ - Thunderbird")
       $WinID=WinGetHandle("")
       $ret=DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", "00000409", "int", 0)
       DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $WinID, "int", "0x50", "int", 1, "int", $ret[0])
    Send("^k")
    Send($CmdLine[1])
    Send("{TAB}")
    Send($FolderZ)
    Send("{TAB 4}")
    Send("{ENTER}")
Else
Run("C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" & " /c " & '-compose subject=~~,body=<p><a href=' & $FolderZ & '>' & $CmdLine[1] & '</a></p>',"", @SW_MAXIMIZE)
EndIf
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Раскладку необходимо установить не только целевому окну, но и окну AutoIt
Код:
#include <WinAPISys.au3>

_WinAPI_SetKeyboardLayout(WinGetHandle(AutoItWinGetTitle()), 0x0409)
_WinAPI_SetKeyboardLayout(WinActivate("Создание сообщения: ~~ - Thunderbird"), 0x0409)
;~ Sleep(1111)
Send("^k")
 
Верх