Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.30;
Скачать: CL | DM;

Вниз

Жутко умный вопрос про ОЛЕ, 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
11-99510
BaRToV
2003-04-14 17:13
2003.12.30
FindWindow и KOL


3-99474
Chlavik
2003-12-02 20:59
2003.12.30
База данных на Delphi.. Можно ли обойтись без BDE ?


1-99571
zsv
2003-12-18 05:58
2003.12.30
Надстрочные и подстрочные символы


7-99795
Woolen
2003-10-23 11:36
2003.12.30
Определение частоты процессора


14-99697
albatros
2003-12-09 19:07
2003.12.30
Программа, обеспечивающая взаимодействие операцонной системы с пе