Mã nguồn :
#include <WinAPIEx.au3>
#include <Misc.au3>Func _BlockFile_Proc($sFile)
Local $ErrorMessage = ""
If Not FileExists($sFile) Then
$ErrorMessage = _Iif(_WinAPI_PathIsDirectory($sFile), "Thư mục không tồn tại", "Tập tin không tồn tại")
SetError(1)
Return $ErrorMessage
EndIf
Local $hFile = _WinAPI_CreateFileEx($sFile, $OPEN_EXISTING, BitOR($GENERIC_READ, $GENERIC_WRITE), 0, _Iif(_WinAPI_PathIsDirectory($sFile), $FILE_FLAG_BACKUP_SEMANTICS, 0))
If @error Or $hFile = -1 Then
$ErrorMessage = "Không thể khóa tập tin này"
If _WinAPI_PathIsDirectory($sFile) Then $ErrorMessage = "Không thể khóa thư mục này"
If _WinAPI_GetLastError() = 32 Then $ErrorMessage &= @CRLF & "Nguyên nhân: tập tin hoặc thư mục đang được sử dụng"
SetError(1)
Return $ErrorMessage
EndIf
Return $hFile
EndFunc ;==>BlockFile
Func _UnBlockFile_Proc($BlockHandle)
If IsHWnd($BlockHandle) Then
$iRet = _WinAPI_CloseHandle($BlockHandle)
Else
Return SetError(1, 0, -1)
EndIf
EndFunc ;==>_UnBlockFile_Proc
$BlockHandle = _BlockFile_Proc(@ScriptDir&"\test.txt")
$Error=@error
MsgBox(_Iif($Error,16,0),_Iif($Error,'Lỗi','Hoàn tất'),_Iif($Error,$BlockHandle,'Đã khóa tập tin này'))
If $Error then Exit
_UnBlockFile_Proc($BlockHandle)
MsgBox(0, 'Hoàn tất', 'Đã mở khóa tập tin này')
Sử dụng hai hàm trên, các bạn có thể ứng dụng để viết một chương trình để khóa tập tin và thư mục hoàn chỉnh.