![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Скорее всего надо пойти другим путем. Надо отслеживать существование служебного файла, который создается для всех открытых на редактирование документов Word. Возможно вы видели такой файл, он создается рядом с открытым документом и для файла FileName.doc, будет иметь вид ~$leName.doc Этот файл автоматически удаляется, когда документ закрывается - вот вам и средство контроля. Для экселя должно быть так же.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 22.09.2021 в 02:23. |
#2
|
|||
|
|||
![]() Попробуй дождаться освобождения файла, вот кусок из моей программы, подредактируй под себя:
Код:
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. |