Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
8-59807
Rom@n
2003-02-08 08:26
2003.05.19
Мультимедиа


4-59986
AlexRush
2003-03-18 13:25
2003.05.19
своя GetModuleHandle


1-59714
Дима
2003-05-05 17:49
2003.05.19
Директория запуска программы.


1-59747
Max1111
2003-05-06 10:58
2003.05.19
Вопрос по конструированию


1-59672
Patrick
2003-05-07 10:42
2003.05.19
Кодировка клавиш




   Наверх