//Определить, в использовании ли файл
function IsFileInUse(const fName: TFileName): Boolean;
//Пример:
//    if OpenDialog1.Execute then
//      if IsFileInUse(Opendialog1.FileName) then ShowMessage('File is in use!');
//
var
  HFileRes: HFILE;
begin
 Result := False;
 HFileRes := CreateFile(PChar(fName),
     GENERIC_READ or GENERIC_WRITE,
     0,
     nil,
     OPEN_EXISTING,
     FILE_ATTRIBUTE_NORMAL,
     0);
 Result := (HFileRes = INVALID_HANDLE_VALUE);
 if not Result then
 CloseHandle(HFileRes);
 end;

ZVLT