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

Вниз

Проблемы с подключением к Word   Найти похожие ветки 

 
VVR   (2003-05-06 14:46) [0]

Привет всем!

Проблема с подключением к Word из-под Windows 2000, XP.

Из-под Windows 98 все работает четко и быстро.

А делаю я так:
1). Сначала коннектюсь :) к Word:

try
W:=GetActiveOleObject("Word.Application");
except
W:=CreateOleObject("Word.Application");
end; //try


На этом этапе, если стоит Windows 98, то все нормально с любым MS Office-ом.

Если стоит Windows 2000,XP + MS Office XP, то тоже все нормально.

А если стоит Windows 2000,XP + MS Office 2000, то получаю ругательство:

EOleSysError
Вызов был отклонен

Вот это проблема №1 - Как подружить Дельфи с Виндой 2000,XP и Офисом 2000?

2). Далее добавляю пустой документ:

W.Application.Documents.Add(EmptyParam,EmptyParam);
W.Application.Visible := True;


И опять, если стоит Windows 98, то все нормально.

А если стоит Windows 2000,XP то получаю ругательство от Офиса о том, что во время последнего открытия документа normal.dot произошла серьезная ошибка...

И это только если п.1 и п.2 следуют сразу друг за другом.
Если же между ними есть временной промежуток, например по одной кнопке коннектимся к Ворду, а по другой добавляем документ и делаем видимым, то тоже все нормально, и normal.dot оказывается совершенно ни при чем.

Так вот как совмесить п.1 и п.2 в одном месте ( ну чтобы на две кнопки не нажимать, а весь процесс присоединения к Ворду, добавление нового документа, ну и, например сброс каких-нибудь данных - все одним ударом :) ???

Да, и еще одно. Если установить Винду 2000 поверх Винды 98, то тоже все прекрасно работает :) И с любым Вордом :)

Что ж есть такое в Винде 98, чего не хватает 2000 и XP?

Заранее благобдарю. Вячеслав.


 
wildbit   (2003-05-06 17:07) [1]

Попробуй поюзать раннее связывание, на закладке Servers


 
VVR   (2003-05-07 07:19) [2]

Да пробовал я через компоненты на вкладке Servers.
Та же самая ерунда :(
Правда под 98 Виндой тоже все замечательно работает :)


 
Rocker ©   (2003-05-07 07:30) [3]

Попробуй код:

var
Unknown : IUnknown;
Result : HResult;
App : Variant;

begin
Result := GetActiveObject(ProgIDToClassID("Word.Application"),nil,Unknown);
if (Result = MK_E_UNAVAILABLE) then
app := CreateOleObject("Word.Application")
else
App := GetActiveOleObject("Word.Application");
App.Visible := True;

end;

Проверено в WINDOWS XP!


 
VVR   (2003-05-07 08:07) [4]

Попробовал, ругается на GetActiveObject. Не понимает.
[Error] Main.pas(41): Undeclared identifier: "GetActiveObject"

Может чего еще указать где-то надо?



Страницы: 1 вся ветка

Текущий архив: 2003.05.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.009 c
3-59593
Arkady
2003-04-28 08:23
2003.05.19
Вставка большого файла в базу Access


14-59939
asusfi
2003-04-30 14:47
2003.05.19
Акт выполненых работ


4-59982
Blondin
2003-03-18 17:19
2003.05.19
отсылка нажатия клавиши другой программе


14-59903
Дремучий
2003-04-29 14:54
2003.05.19
Басни со смыслом и моралью....


1-59719
Navi
2003-05-04 08:55
2003.05.19
Таскать картинку как в ACDSee или ScrollBox