myoperam Подключение Lingvo к Oper'е (в Hotclick menu)
ВНИМАНИЕ! ОСТЕРЕГАЙТЕСЬ МОШЕННИКОВ!
Помните, что все браузеры Opera АБСОЛЮТНО БЕСПЛАТНЫ.
Загружайте новые версии ТОЛЬКО С ОФИЦИАЛЬНОГО САЙТА или с ресурсов, которым ДОВЕРЯЕТЕ!


Предыдущее | Следующее | Архив форума | operaman.ru | Поиск
Подключение Lingvo к Oper'е (в Hotclick menu) alter  03/31/04 07:59 AM

Лучший на мой взгляд электронный словарь _//lingvo.ru_ не имеет возможности перевода слова из коммандной строки. Таким образом, подключение его в меню Oper'ы становится задачей нетривиальной.
Долгое время я не мог узнать как именно передаётся слово из сторонних программ в Lingvo [_//forum.lingvo.ru/actualthread.aspx?bid=2&tid=723&pg=-1_].
Узнать содержимое макроса, передающего выделенное в Word'е слово в Lingvo оказалось очень просто.
У меня, правда, версия 6.5, но не думаю что в последующих жто сильно изменилось. Надо открыть шаблон LINGVO6A.DOT, находящийся в папке Lingvo. Тогда станет доступной кнопка редактирования для макросов лингво.
И мне открылись 3 модуля: autoexec (пустой), TranslateByLingvo и TranslateWord99.
TranslateByLingvo Code:
Public Sub MAIN()

Dim wordVer$
wordVer$ = WordBasic.[AppInfo$](2)
If (Mid(wordVer$, 1, 1) <> "6") Then
WordBasic.ToolsMacro Name:="TranslateWord99", Run:=1
End If
End Sub

TranslateWord99 Code:
Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal HWND As Long) As Boolean


Dim msg__$()

'----------------------------------------------------------------------------------
'Fills in the array of messages
'----------------------------------------------------------------------------------

Private Sub FillMsgArray()

'Get language version of WinWord
If (WordBasic.[AppInfo$](16) = "Русский") Then
msg__$(1) = "Невозможно запустить Lingvo. Возможно, ошибка установки или исполняемые файлы удалены."
Else
msg__$(1) = "Cannot run Lingvo. The executable files may be missing."
End If
End Sub
Private Function GetSelectedText() As String
Dim st
Dim bkmrkName$
Dim theWord$
theWord$ = ""
If (WordBasic.CountWindows() = 0) Then GoTo exitFunc
If (WordBasic.SelInfo(27) = -1) Then GoTo exitFunc
st = WordBasic.SelType()
If (st = 1 Or st = 5) Then
'No selection
bkmrkName$ = "_t_Lingvo_get_word"
WordBasic.EditBookmark Name:=bkmrkName$, Add:=1
WordBasic.WordLeft
WordBasic.WordRight , 1
theWord$ = WordBasic.[Selection$]()
WordBasic.EditBookmark Name:=bkmrkName$, GoTo:=1
WordBasic.EditBookmark Name:=bkmrkName$, Delete:=1
ElseIf (st = 2 Or st = 6) Then
'We have a selection
theWord$ = WordBasic.[Selection$]()
End If
exitFunc:
GetSelectedText = theWord$
End Function

Private Sub LingvoTranslateWord()

Dim theWord$
theWord$ = GetSelectedText()
If theWord$ = "" Then GoTo exitSub

Dim a As Object
Set a = CreateObject("Lingvo.Application")
On Error Resume Next
If (Err.Number <> 0) Then
'Не удалось запустить Lingvo
WordBasic.MsgBox msg__$(1), 48
GoTo exitSub
End If

Dim HWND As Long
HWND = a.GetLingvoHWND
If (HWND <> 0) Then
Dim success As Boolean
success = SetForegroundWindow(HWND)
End If
a.TranslateText theWord$

exitSub:
End Sub

Public Sub MAIN()
ReDim msg__$(4)
FillMsgArray
LingvoTranslateWord
End Sub

  • Так можно ли тем способом, каким Word передаёт слово в Lingvo передать слово из Oper'ы?
  • А если нельзя, то может, кто-нибудь возьмётся написать программульку, которая передавала бы слово через коммандную строку?


Re: Подключение Lingvo к Oper'е (в Hotclick menu) Mongoose  03/31/04 11:21 AM

Вот, на коленке написал. Никаких проверок исключительных ситуаций, но работает.

Итак... Вот этот скрипт LINGVO.VBS кидаем в папку Оперы
------------------
AddWord WScript.Arguments(0)

Sub AddWord(ByVal TranslWord)
Set a = CreateObject("Lingvo.Application")
a.TranslateText TranslWord
End sub

------------------

Для Lingvo 9 в скрипте вместо "Lingvo.Application" нужно написать "Lingvo.Application.9" (хотя, может будет работать и так).

В вашем меню в разделе [Hotclick Popup Menu] добавляем строку:Item, "Перевести с помощью Lingvo" = Execute program, "wscript", "//NOLOGO lingvo.vbs %t"

Иногда лучше прописать полный путь к LINGVO.VBS.

Перегружаем браузер. Теперь, если выделить любое слово на страничке и вызвать контекстное меню, появится пункт меню "Перевести с помощью Lingvo".

По другим оперным вопросам прошу в мою _//mongoose.myopera.net/_ на myopera.net.


Re: Подключение Lingvo к Oper'е (в Hotclick menu) monstr  09/28/04 12:10 PM

Уважаемый Mongoose!
Для Lingvo 6 пробовал установить, ничего не получается, выскакивает ошибка >
Сценарий: C:\Program Files\Opera\lingvo.vbs
Строка:4
Символ:1
Ошибка: Невозможно создание объекта контейнером ActivX:Application'
Код:800A01AD
Источник: Ошибка выполнения Microsoft VBScript
стоит Opera 7.54, не могу победить


operaman.ru - Home


Rambler's Top100