Конференция "WinAPI" » FileExists - дает диалог в XP [D5, WinXP]
 
  • z2000 (19.03.10 10:15) [0]
    Заметил такую особенность функция FileExists выводит диалоговое окно в win XP когда происходит следующее:
    работали с CD ромом, вынули диск и вот если функция после этого проверяет наличие файла на отсутствующем в приводе
    диске CD она дает диалоговое окно об отсутствие файла.

    Понятно что оно реализовано в недрах WIN API, но все же
    как от него избавиться, может кто с таким сталкивался,
    эта штука в определеных моментах совсем ненужная и даже вредная...
  • evvcom © (19.03.10 10:33) [1]
    Напиши мелким и мягким
  • {RASkov} © (19.03.10 10:34) [2]
    > [0] z2000   (19.03.10 10:15)

    Приведи пример кода, который выполняет описанное в [0]
  • Anatoly Podgoretsky © (19.03.10 10:51) [3]
    SetErrorMode
  • z2000 (19.03.10 12:36) [4]
    Anatoly Podgoretsky   Спасибо!
  • DVM © (19.03.10 13:16) [5]

    function FileExists2(const FileName: string): Boolean;

     function ExistsLockedOrShared(const Filename: string): Boolean;
     var
       FindData: TWin32FindData;
       LHandle: THandle;
     begin
       LHandle := FindFirstFile(PChar(Filename), FindData);
       if LHandle <> INVALID_HANDLE_VALUE then
       begin
         Windows.FindClose(LHandle);
         Result := FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0;
       end
       else
         Result := False;
     end;

    var
     Code: Integer;
     LastError: Cardinal;
     OldMode: Cardinal;
    begin
     OldMode := SetErrorMode(SEM_FAILCRITICALERRORS);
     Code := Integer(GetFileAttributes(PChar(FileName)));
     if Code <> -1 then
       Result := (FILE_ATTRIBUTE_DIRECTORY and Code = 0)
     else
     begin
       LastError := GetLastError;
       Result := (LastError <> ERROR_FILE_NOT_FOUND) and
         (LastError <> ERROR_PATH_NOT_FOUND) and
         (LastError <> ERROR_INVALID_NAME) and ExistsLockedOrShared(Filename);
     end;
     SetErrorMode(OldMode);
    end;

 
Конференция "WinAPI" » FileExists - дает диалог в XP [D5, WinXP]
Есть новые Нет новых   [134431   +16][b:0][p:0.001]