Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Вниз

Можно ли перезаписать "работающий" файл?   Найти похожие ветки 

 
Dimich1978   (2006-05-10 13:28) [0]

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


 
Сергей М. ©   (2006-05-10 13:31) [1]


> Как это можнро обойти


Док.способами - никак.


 
Dstr ©   (2006-05-10 19:20) [2]

Есть 2 способа(за рабочесть - не отвичаю):
1.Exe"шник загружает обновления в Temp винды,создает батник(который копирует файлы и самоуничтожается),запускает батник,выгружается из памяти...2 через 10 мин


 
Dstr ©   (2006-05-10 19:25) [3]

Вот 2,но я его уже писал на форуме,ето статья
В Windows NT 4/2000 есть такая API функция, имеющая очень интересный последний аргумент. Функция позволяет также переименовывать указанный файл или директорию.

MoveFileEx(ExistingFN, NewFN, MOVEFILE_REPLACE_EXISTING или
MOVEFILE_DELAY_UNTIL_REBOOT



Если задать MOVEFILE_DELAY_UNTIL_REBOOT в dwFlags (характерно для Windows NT 4/2000), то в реестр будет занесена специальная информация и после перезагрузки Windows сотрёт или перепишет указанный файл

Параметры:

ExistingFN указатель на строку (null-terminated) , которая содержит имя нужного нам файла или директории.
NewFN указатель на строку (null-terminated), содкржащую новое имя файла, указанного ExistingFN.
Флаг MOVEFILE_REPLACE_EXISTING указывает функции заменить, если файл ExistingFN уже существует. Если указать в NewFN - nil, ExistingFN будет стёрт.
Пример:

Перемещение файла:

MoveFileEx("c:\winnt\system32\kernel32.dll", "d:\winnt.bak\system32\kernel32.dll",
MOVEFILE_REPLACE_EXISTING или MOVEFILE_DELAY_UNTIL_REBOOT



Удаление существующего файла:

MoveFileEx("c:\winnt\system32\kernel32.dll", nil,
MOVEFILE_REPLACE_EXISTING или MOVEFILE_DELAY_UNTIL_REBOOT


Или делай так чтоб все сидело в DLL (Exe шник токо загружает при запуске DLL в память)



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

Форум: "Основная";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.01 c
2-1148768422
Галинка
2006-05-28 02:20
2006.06.18
Русский в проекте на Дельфи на нерусской системе


15-1148392592
vidiv
2006-05-23 17:56
2006.06.18
как перехватит буфер обмена при вставки в richedit


15-1147976599
Nic
2006-05-18 22:23
2006.06.18
Как можно себя поддержать в рабочем состоянии


2-1148897500
Влад
2006-05-29 14:11
2006.06.18
WinAPI


2-1149012980
JTAG
2006-05-30 22:16
2006.06.18
Господа подскажите пожалуйста как сделать чтобы в StringGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский