Всё про браузер Opera
.: Форум сайта - operaman.ru :.

Opera браузер >> Opera for Windows

Страниц в этой теме: 1
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) new 
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) new 
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)

Страниц в этой теме: 1  

Opera браузер >> Opera for Windows

Дополнительные сведения
0 зарег. и 71 анонимные пользователи просматривают этот форум.

Модератор:  netman, van_grieg, alter, Angolier, Pechkin 

Распечатать тему

Разрешения
      Вы не можете создавать новые темы
      Вы не можете отвечать в темах
      HTML запрещен
      UBBCode разрешен

Рейтинг:
Тема просмотрена: 6346

Оценить эту тему
Быстрый поиск
Перейти на



  
Отправить email администрации operaman.ru - Home

© 2000-2002. Николай Ковальчук - All rights reserved
Rambler's Top100