Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1131101911
syte_ser78
2005-11-04 13:58
2005.11.20
зачем нужен POST ?


2-1130424110
zaN0za
2005-10-27 18:41
2005.11.20
Вопрос по потокам


14-1130518782
Ксардас
2005-10-28 20:59
2005.11.20
Какова роль общества в политике?


14-1130479509
AngelOfDeath
2005-10-28 10:05
2005.11.20
DLL


1-1130321591
Prohodil Mimo
2005-10-26 14:13
2005.11.20
Как добавлять VCL (Win32) компоненты в Delphi 2005?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский