Что нового

[Файловая система] Создание дескриптора к файлу

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Здравствуйте, помогите разобраться с функцией:
Код:
#Include<WinAPI.au3>
#Include<WinAPIEx.au3>
_WinAPI_CreateFile()
;Или в этой:
_WinAPI_CreateFileEx()

Не давно я разбирал код Блокировка файлов, там программа создает дескриптор к файлу тем самым блокируя его(пока сама работает или не закроет его).
Мне бы хотелось узнать, как использовать _WinAPI_CreateFile() или _WinAPI_CreateFileEx() так, чтобы файл блокировался только для сторонних программ, ну а сама программа написанная на AutoIt могла иметь к файлу доступ и вписывать значения в него.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
MnM

Код:
; Открываем файл
_WinAPI_CreateFile()

; Запись/чтение
_WinAPI_WriteFile()
_WinAPI_ReadFile()

; Передвижение по файлу
_WinAPI_SetFilePointer()

; Завершаем работу с файлом
_WinAPI_CloseHandle()
 

InnI

AutoIT Гуру
Сообщения
4,949
Репутация
1,443
MnM
В этих функциях параметр $iShare отвечает за параллельный доступ к файлу. Если он равен 0 (по умолчанию), то доступ к файлу имеет только программа, создавшая/открывшая его.
Код:
#include <WinAPI.au3>
HotKeySet("{esc}", "Quit")
$quit = 0

$f = _WinAPI_CreateFile(@ScriptDir & "\test.txt", 3)
Do
  Sleep(100)
Until $quit

_WinAPI_CloseHandle($f)

Func Quit()
  $quit = 1
EndFunc
Попробуйте открыть/скопировать/удалить файл test.txt во время работы скрипта.
 
Верх