Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > DDE, OLE и т.п.


Автор: Vit 9.12.2004, 18:54
В Windows очень легко реализуется например такая штука - я в окне своего приложения могу как контрол использовать окно Word, Excel и т.п. Как сделать такое под Linux? В частности мне надо в окно своего приложения засунуть например kwrite, не просто его открыть, а именно как контрол моего окна...

Автор: Sun 10.12.2004, 16:30
Механизм OLE в Linux не поддерживается и поэтому такие штуки штатными средствами реализовать IMHO нельзя. Что касается DDE, то в Linux поддерживается shared memory - именованная область памяти, доступная всем процессам - практически один к одному DDE. Что касается внедрения окна чужого приложения в свое - думаю это возможно, но надо крепко подумать smile

Автор: chipset 10.12.2004, 16:48
Цитата(Vit @ 9.12.2004, 07:54)
В Windows очень легко реализуется например такая штука - я в окне своего приложения могу как контрол использовать окно Word, Excel и т.п

Окно опенофиса допустим ты без хаков не засунешь.. Офис расшарил своё окно как компонент COM, поэтому ты можешь его юзать..

Автор: Vit 13.12.2004, 18:18
Цитата(chipset @ 10.12.2004, 07:48)
Окно опенофиса допустим ты без хаков не засунешь..


Да ну? Можно и через DDE, можно посылать сообщения и окну и любым его элементам, можно перехавтывать сообщения к окну и от окна... Много чего можно, какой-там хак... Если виндовое приложение не поддерживает COM то это ещё не значит что какие -то хаки нужны, COM была придумана в 95 винде, а в 3.1 или в 2.0 тоже можно было управлять чужими приложениями без проблем...

Цитата(Sun @ 10.12.2004, 07:30)
Что касается DDE, то в Linux поддерживается shared memory - именованная область памяти, доступная всем процессам - практически один к одному DDE


Это не то! Совсем не то... чужую память читать конечно можно, только толку в этом никакого...

Автор: Sun 14.12.2004, 11:58
В Linux, как и в Unix есть следующие способы взаимодействия процессов:
- неименованные каналы (pipes) Можно организовать взаимодествие между дочерним и отцовским процессом;
- именованные каналы (FIFO) Почти тоже что и pipe, но позволяют взаимодействовать любым процессам, так как доступ к каналу идет по его имени;
- разделяемая память (shared memory);
- сокеты;
- файлы;
Каких либо других способов взаимодествия процессов с обменом данными в Linux, насколько я знаю, нет. Так что нужно исходить из того что есть.

Автор: Mad 14.12.2004, 15:13
Vit
Есть попытки сделать чтото на подобии COM в некоторых оконых менеджерах (GNOME и KDE). Посмотри описание API для них.

Автор: Sun 14.12.2004, 16:04
Цитата(Mad @ 14.12.2004, 12:13)
Есть попытки сделать чтото на подобии COM в некоторых оконых менеджерах (GNOME и KDE). Посмотри описание API для них.

Да, есть такое дело. Называется KParts.
http://developer.kde.org/documentation/tutorials/kparts/
Думаю это то что нужно

Автор: Vit 19.12.2004, 06:32
Цитата(Sun @ 14.12.2004, 07:04)
Да, есть такое дело. Называется KParts.



Смотрел, но их должна поддерживать вызываемая программа smile

Автор: Mad 19.12.2004, 13:54
Vit
А што ты хотел, например блокнот в форточке тоже COM не потдерживает smile

Автор: chipset 20.12.2004, 17:57
Цитата(Vit @ 18.12.2004, 19:32)
Смотрел, но их должна поддерживать вызываемая программа smile

Что я и говорил.
Если ты трогаешь чужую программу хотя она не предоставила интерфейсов - это уже хак.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)