Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
8-99662
mrAld
2003-08-28 14:33
2003.12.30
Термин


4-99829
h0use
2003-10-31 09:56
2003.12.30
Как создавать визуальные объекты не на форме, а на десктопе?


14-99754
MPS
2003-12-06 13:51
2003.12.30
Ручная компиляция проекта


3-99501
Artemij
2003-12-04 13:04
2003.12.30
Поле Memo в DBGrid


6-99680
adv
2003-10-31 07:15
2003.12.30
Подключение к нескольким ресурсам LAN





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский