Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизПауза в приложении. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c