Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать, что конкретный документ Word уже открыт?


Гость22 ©   (2005-09-05 15:39:00) 


zhas   (2005-09-14 15:24:00) [1]

Повторный вызов GetActiveOleObject ничего не дает - он всегда возвращает первый экземпляр программы если они вообще есть.


zhas   (2005-09-13 13:51:00) [2]

А что можно сделать если запущено 2 или более экземпляра программы, и первый из них - возвращаемый функцией GetActiveOleObject не содержит данного документа, но он(этот 2.doc например) открыт вторым экземпляром?
Т.е. мы просматриваем список открытых документов в первом запущенном Word'е, и если 2.doc содержится во втором, а не в первом - не видим его. Как можно просмотреть все экземпляры программы?


GanibalLector   (2005-09-05 19:34:00) [3]


var Words:Variant;
     n:integer;
begin
 try
   try
     Words:=GetActiveOleObject('Word.Application');
     //Caption:='Всего документов:'+ IntToStr(Words.Documents.Count);
     for n:=1 to Words.Documents.Count do
     begin
       if AnsiSameText('C:\2.doc',Words.Documents.Item(n).FullName) then
       begin
         // типа нашли ;)
       end;
     end;
   finally
     Words:=Unassigned;
   end;
 except
   MessageDlg('Word не запущен!',mterror,[MbOk],0);
 end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо