alter
|
Operaman
|
|
|
Зарегистр: 19/11/2002
|
Сообщений: 903
|
Из: Irkutsk, Russia
|
|
Подключение Lingvo к Oper'е (в Hotclick menu)
31/03/2004 07:59
[post link]
|
Напомнить
Правка
|
Сообщить
Ответ
|
|
|
Лучший на мой взгляд электронный словарь ABBYY Lingvo не имеет возможности перевода слова из коммандной строки. Таким образом, подключение его в меню Oper'ы становится задачей нетривиальной.
Долгое время я не мог узнать как именно передаётся слово из сторонних программ в Lingvo [>>>].
Узнать содержимое макроса, передающего выделенное в 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'ы?
- А если нельзя, то может, кто-нибудь возьмётся написать программульку, которая передавала бы слово через коммандную строку?
|
Mongoose
|
Moderator
|
|
|
Зарегистр: 21/05/2003
|
Сообщений: 1754
|
Из: Київ, Ненька Україна
|
|
Re: Подключение Lingvo к Oper'е (в Hotclick menu)
31/03/2004 11:21
[Re: alter]
[post link]
|
Напомнить
Правка
|
Сообщить
Ответ
|
|
|
Вот, на коленке написал. Никаких проверок исключительных ситуаций, но работает.
Итак... Вот этот скрипт 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".
По другим оперным вопросам прошу в мою Мастерскую Мангуста на myopera.net.
|
monstr
|
User
|
|
|
Зарегистр: 14/07/2004
|
Сообщений: 57
|
Из: Екатеринбург
|
|
Re: Подключение Lingvo к Oper'е (в Hotclick menu)
28/09/2004 12:10
[Re: Mongoose]
[post link]
|
Напомнить
Правка
|
Сообщить
Ответ
|
|
|
Уважаемый Mongoose!
Для Lingvo 6 пробовал установить, ничего не получается, выскакивает ошибка >
Сценарий: C:\Program Files\Opera\lingvo.vbs
Строка:4
Символ:1
Ошибка: Невозможно создание объекта контейнером ActivX:Application'
Код:800A01AD
Источник: Ошибка выполнения Microsoft VBScript
стоит Opera 7.54, не могу победить
Исправлено monstr (29/09/2004 06:49)
|
|
0 зарег. и 71 анонимные пользователи просматривают этот форум.
Модератор: netman, van_grieg, alter, Angolier, Pechkin
Распечатать тему
|
Разрешения
Вы не можете создавать новые темы
Вы не можете отвечать в темах
HTML запрещен
UBBCode разрешен
|
Рейтинг:
Тема просмотрена: 6346
|
|
Быстрый поиск
|
|
|
© 2000-2002. Николай Ковальчук - All rights reserved
|
|