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

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



Память: 0.48 MB
Время: 0.024 c
10-1108124068
PVOzerski
2005-02-11 15:14
2005.11.20
R6025 - pure virtual function call


14-1130271699
Quasilamo
2005-10-26 00:21
2005.11.20
Программа для просмотра и манагамента дайджестов этого форума


9-1120384424
tERRORist
2005-07-03 13:53
2005.11.20
Проблемы с прозрачными объектами в GLScene


14-1130388039
Ega23
2005-10-27 08:40
2005.11.20
С днем рождения! 27 октября


14-1130362386
TButton
2005-10-27 01:33
2005.11.20
понравился вопрос в тесте




   Наверх