• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Встраивание Ms Word в окно своего приложения

  • Автор темы WishMaster
  • Дата начала
W

WishMaster

Доброе время суток!
Когда то давно помню читал где-то, как можно встроить приложение Word в свое приложение таким образом, чтобы Word открывался не отдельным окном-приложением, а загружался бы в заданном объекте (только какой это объект?) своего приложения. Но сейчас уже все забыл :) Кто-нибудь с таким сталкивался? Как можно сделать так, чтобы Word открылся именно в заданной области моего приложения? Управление им (запуск сервера, открытие документов и т.п.) - не вопрос.
Заранее благодарен за советы.
 
W

WishMaster

OLEContainer’ом пока не доволен по следующим причинам:
1) меню Ворда интегрируется в меню приложения. Я хотел бы, чтобы меню Ворда оставалось «при нем» и не создавало лишний «ажиотаж» в меню приложения ;)
2) при щелчке мышью на другом компоненте не могу вернуть фокус назад в Ворд;
3) не знаю, как получить указатель на созданный в ОЛЕ контейнере ворд, чтобы управлять им (например, создать там какой-либо текст).
Я создал простенький проект, на котором можно при желании ознакомиться с объектом моего недовольства :) Есть главная форма MainForm, в которой можно создавать дочерние формы ChildForm с ОЛЕ контейнером. В конструкторе дочерней формы в ОЛЕ контейнер загружается Ворд. В главной форме есть меню, в которое сразу «залазит» непрошенное меню Ворда :) При нажатии на Button1 в дочерней форме вернуть фокус клацаньем на Ворд мне не удается. Так же не знаю, как получить указатель на Ворд в конкретном дочернем окне.

Кто-нибудь знает, как бороться с такими «недостатками»?
Или может быть есть какой-нибудь другой, более продвинутый способ интеграции Ворда? В таком случае буду благодарен за пример.

Посмотреть вложение Project2.ZIP
 
W

WishMaster

см. TOleContainer.OleObject
Спасибо, разобрался. Осталось непонятным:
1) как отключить встраивание меню и кнопочной панели;
2) как возвращать в Ворд фокус (чтобы можно было убирать из него курсор и возвращать назад как при работе с обычным RichEdit).
 
W

WishMaster

Тут наверное надо смотреть на сам ворд
В самом ворде, на сколько знаю, можно варьировать наличие тех или иных панелей (не знаю, можно ли меню). Но вопрос не в этом. Вопрос в том, как сделать так, чтобы они оставались в ворде, а не лезли в приложение. Я не знаю таких настроек в ворде :-\

А что происходит когда фокус теряется?
Ворд становиться неактивным и потом сколько я в него не тыкаю, фокус назад не возвращается. Единственный вариант - расширить ОЛЕ контейнер и ткнуть не на ворд, а непосредственно на сам контейнер - тогда фокус возвращается. Тыканье же на ворд не удается отследить ни в каком обработчике :-\
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!