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

Вниз

Пауза в приложении.   Найти похожие ветки 

 
BanderLog   (2005-11-02 12:16) [0]

Мастера, подскажите пожалуйста, как реализовать паузу в приложении, допустим на секунда. Ситуация такая, один файл необходимо переместить из одного каталога в другой, но при этом файл бывает не всегда освобожден программой, которая с ним работает. необходимо подождать секунду - другую и повторить попытку переноса.


 
Игорь Шевченко ©   (2005-11-02 12:18) [1]

Sleep(1000) ?


 
BanderLog   (2005-11-02 12:24) [2]

О! Оно!!!! перебрал все варианты Delay, Pause...  а про него забыл :)


 
BanderLog   (2005-11-02 12:37) [3]

Совсем забыл.... Спасибо :)


 
Digitman ©   (2005-11-02 13:27) [4]


> Ситуация такая, один файл необходимо переместить из одного
> каталога в другой, но при этом файл бывает не всегда освобожден
> программой, которая с ним работает


а программу эту ты САМ программно запускаешь ?

или типа неизвестно заранее, кто и как сейчас пользует это файл, потому типа и подождать (хрен знает сколько) не грех ?


 
BanderLog   (2005-11-03 09:06) [5]

Идет обработка автокадоских файлов скриптом в автокаде. Автокад я запускаю сам через CreateOleObject, потом запускаю в нем скрипт, который закрывает автокад. После отработки скрипта необходимо закопировать обработанные файлы в другой каталог.
Возникает вопрос, как отловить момент закрытия автокада?


 
Digitman ©   (2005-11-03 10:03) [6]


> как отловить момент закрытия автокада?


ищешь процесс Автокада в списке активных процессов, получаешь его PID, открываешь процесс, получаешь его хэндл

далее ждешь завершения процесса с пом. одной из удобных тебе WaitFor-функций

еще лучше будет стартовать процесс Автокада явно (CreateProcess), при этом искать его в списке процессов не требуется - ф-ция вернет хэндл процесса .. а после этого обращаешься к стартованному процессу как к олей-серверу (GetActiveOleObject)


 
Leonid Troyanovsky ©   (2005-11-03 11:58) [7]


> BanderLog   (03.11.05 09:06) [5]

> Автокад я запускаю сам через CreateOleObject, потом запускаю
> в нем скрипт, который закрывает автокад. После отработки
> скрипта необходимо закопировать обработанные файлы в другой
> каталог.


А чего, скрипт не может сам скопировать файлы в другой каталог?

--
Regards, LVT.


 
BanderLog   (2005-11-03 12:02) [8]

После завершения обработки скриптом, с файлами проводится ещё ряд манипуляий, которые скрипту не под силу... Которые в любом случай необходимо выполнять по завершению автокада.


 
Digitman ©   (2005-11-03 12:39) [9]


> BanderLog   (03.11.05 12:02) [8]


а у Акада как сервера автоматизации разве нет событий, извещающих олей-контроллер об открытии/закрытии документов ?

я просто не в курсе ..

скажем, у Excel.Application есть событие OnWorkbookBeforeClose, которое вполне можно приспособить для фиксации факта завершения работы сервера с файлом документа


 
Leonid Troyanovsky ©   (2005-11-03 12:55) [10]


> BanderLog   (03.11.05 12:02) [8]
> После завершения обработки скриптом, с файлами проводится
> ещё ряд манипуляий, которые скрипту не под силу... Которые
> в любом случай необходимо выполнять по завершению автокада.


Ну, если  у объекта Автокад есть свойства типа идентификатора
текущего процесса, или, хотя бы, хендла активного окна, то
проблемы с ожиданием решаются просто, как уже рассказывал
уважаемый Digitman ©. Если нет - то можно попробывать вернуть
результат вызова из скрипта того же GetCurrentProcessId.
(в VBA описание оной ф-ции выглядело б примерно так:
declare function GetCurrentThreadId lib "kernell32" as Long).

--
Redgards, LVT.


 
BanderLog   (2005-11-04 13:08) [11]

Спасибо всем :)
Сделал как советовал
> Digitman ©   (03.11.05 12:39) [9]

Полностью отпал вопрос с OLE, т.к. скрипт запускается из командной строки. Так же появилась возможность отмены обработки файлов, и запуск автокада невидимым. Все чудесно работает...



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

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

Наверх




Память: 0.49 MB
Время: 0.025 c
2-1130453251
Dub
2005-10-28 02:47
2005.11.20
что за глюк и с чем его кушать?


2-1130596420
ruslan1
2005-10-29 18:33
2005.11.20
LPT порт


9-1120200139
Pasechnick
2005-07-01 10:42
2005.11.20
GLScene и ATI


2-1130589369
Herbariun
2005-10-29 16:36
2005.11.20
Длина строки


2-1130643453
gdaujk
2005-10-30 06:37
2005.11.20
TListView с функциональностью TValueListEditor.