Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.09.2021, 02:10
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Скорее всего надо пойти другим путем. Надо отслеживать существование служебного файла, который создается для всех открытых на редактирование документов Word. Возможно вы видели такой файл, он создается рядом с открытым документом и для файла FileName.doc, будет иметь вид ~$leName.doc Этот файл автоматически удаляется, когда документ закрывается - вот вам и средство контроля. Для экселя должно быть так же.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 22.09.2021 в 02:23.
Ответить с цитированием
  #2  
Старый 27.09.2021, 07:55
AlexeiMylnikov AlexeiMylnikov вне форума
Прохожий
 
Регистрация: 23.08.2021
Сообщения: 2
Версия Delphi: Delphi 10.4.2
Репутация: 10
По умолчанию

Попробуй дождаться освобождения файла, вот кусок из моей программы, подредактируй под себя:

Код:
if(FileExists(FileName))then begin
                         try    i:=0; //Жду  освобождения  файла, но не более 20 сек:
                                repeat i:=i+1;
                                       HFileRes := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,  0);
                                       b := (HFileRes = INVALID_HANDLE_VALUE); // False => файл не занят никем
                                       if(b)then                                          // Занят, жду-освобождения
                                            ELSE begin CloseHandle(HFileRes); BREAK; end; // Не занят, выхожу из ожидания
                                       Label1.Caption:='Жду освобождения файла: '+IntToStr(i)+c13+ExtractFileName(FileName); Application.ProcessMessages; Sleep(200);   
                                until (i>99);
                                if(i>1)then Label1.Caption:='Освободился'+c13+ExtractFileName(FileName); if(i>99)then Label1.Caption:='Занят'+c13+ExtractFileName(FileName); if(i>1)then Application.ProcessMessages;
                         except end;
Админ: Пользуемся тегами при оформлении кода!

Последний раз редактировалось Admin, 27.09.2021 в 19:29.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:30.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025