Форум: "Основная";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
ВнизЖутко умный вопрос про ОЛЕ, WINAPI и все остальное :))) Найти похожие ветки
← →
Иванько (2003-12-15 17:16) [0]Есть такая нетривиальная проблема. Из программы на Дельфи путем вызова ОЛЕ-объекта отправляется запрос в другую программу (Конкретнее, я работаю с Lingvo 7.0, но догадываюсь, что проблема может коснуться и других приложений):
lingvo1:=createoleobject("lingvo.application");
HWND:=lingvo1.GetLingvoHWND;
if HWND <> 0 then SetForegroundWindow(HWND);
lingvo1.translatetext(trans);
Сия ботва работает прекрасно, и вызывается Лингвой дочернее окно с переводом нужного слова. Теперь проблемс: у дочернего окна есть такой объектик, что-то вроде TRichEdit, в котором отображается перевод слова, и ВНИМАНИЕ!!! - кнопочка, нажимая на которую мы можем прослушать перевод слова. Только данная кнопочка не является объектом с точки зрения Винды (то есть все редакторы ресурсов видят только родительский объект, тот,который на RichEdit похожий), а кнопка эта является как я понял ОЛЕ-контейнером для соотвествующего Wave-файла (впрочем, для чего это неважно, нам надо всего навсего на нее нажать, а что произойдет - дело десятое). Что-то вроде этого можно сделать например в WORD-е, вставив звуковой файл в документ (появится рисунок иконки файла, нажимая на него можно вызвать внешнюю программу обработки данного файла). Кстати, как я помню, у RxLib вроде есть расширенный Richedit с такими возможностями. А вот вопрос - как же можно нажать эту чертову кнопку (дескриптор дочернего окна меняется, заголовок окна тоже, координаты кнопки тоже, а все что у нас есть - это хандл родительского окна :))))).
← →
Ломброзо (2003-12-15 21:25) [1]EnumChildWindows и FindWindowEx итеративно по всем дочерним окнам, начиная от того, чей хэндл известен, с поиском кнопки с таким-то классом окна (PChar). Название класса окна этой чёртовой кнопки можно получить Spy++ или подобной ей утилитой. Если она вообще кнопка, а не какой-нить безхэндловый контрол.
← →
Иванько (2003-12-16 08:36) [2]дык как раз и безхендловый... я ж грил, что ее не выдно энтими утилитами....
← →
alex_*** (2003-12-16 08:50) [3]Тогда с помощью SPY нужно отловить мессаг, который посылается главному окну при нажатии кнопки и отсылать его (WndProc как-то узнает что нажата кнопка...).
← →
Digitman (2003-12-16 08:52) [4]с трудом верится, что объект lingvo.application не имеет соотв.метода
← →
Иванько (2003-12-16 09:48) [5]1. Объект lingvo.application имеет только 2 метода: перевести текст и получить хандл родительского окна...
2. Уж простите, но с АПИ практически не работал, так что дилетант я...
Со SPY не работал, а смотрел winsight что в дельфях есть...
← →
Digitman (2003-12-16 10:07) [6]
> Иванько
ну ты определи координаты зоны, занимаемой "рисованой" кнопкой да посылай туда (в доч.окно) мышиные сообщения с целью эмуляции действий пользователя
с другой стороны, коль интерфейс "озвучки" явно не предоставлен этим объектом, лучше всего будет воспользоваться стандартными документированными интерфейсами Speech Engine - объектов.
практически любой SE-интерфейс предоставляет методы, реализующие то что тебе нужно, т.е. параметром передается текст, результат - речевой синтез
← →
Иванько (2003-12-16 10:20) [7]вот блин, координаты кнопки меняются :(
а мне синтез не нужен, там готовый записанный звук уже выдается, а синтез речи не при чем...
← →
Digitman (2003-12-16 10:25) [8]
> вот блин, координаты кнопки меняются
что ж ... печально это ... значит, способ не даст гарантированной надежности
> мне синтез не нужен, там готовый записанный звук уже выдается,
> а синтез речи не при чем
чем хуже синтезированная речь ? многие высококачественные речевые движки весьма неплохо справляются с той же задачей
← →
Ломброзо (2003-12-16 10:48) [9]> Digitman © (16.12.03 10:25) [8]
Маленькая такая тонкость: текст для Lingvo надиктовывают носители языка :-)
← →
REA (2003-12-16 10:57) [10]1) Поискать более новую лингву
2) Обратиться к разработчику за помощью
3) Узнать методику соответствия найденного слова и wav файла и (выдрав звук) проиграть самому.
← →
Digitman (2003-12-16 11:28) [11]
> Ломброзо
парни из BIT Software - "носители" ? или способны при любой модификации проекта/словарей оплатить "натуральным носителям" такую работу ?
позволю себе усомниться в этом)
← →
Ломброзо (2003-12-16 12:27) [12]Во-первых, они уже давно не BIT Software )
http://www.abbyy.ru/company.asp?param=4318&from=menu_left
Ну и вот:
http://www.lingvo.ru/lingvo.asp?param=29553 :
"
...
-Классический интерфейс.
-15 000 слов, озвученных диктором из Великобритании.
...
"
← →
Digitman (2003-12-16 12:32) [13]
> Ломброзо
> Во-первых, они уже давно не BIT Software
не суть как важно
> 15 000 слов, озвученных диктором из Великобритании
знаешь, что обычно на заборе написано, в то время как там дрова лежат ?)
← →
Ломброзо (2003-12-16 13:39) [14]>знаешь, что обычно на заборе написано, в то время как там дрова
>лежат ?)
"Осторожно, злая собака!"
Впрочем, я не понимаю, отчего Вы так не желаете уверовать в диктора )
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.015 c