Форум: "WinAPI";
Текущий архив: 2014.03.30;
Скачать: [xml.tar.bz2];
ВнизFileExists - дает диалог в XP Найти похожие ветки
← →
z2000 (2010-03-19 10:15) [0]Заметил такую особенность функция FileExists выводит диалоговое окно в win XP когда происходит следующее:
работали с CD ромом, вынули диск и вот если функция после этого проверяет наличие файла на отсутствующем в приводе
диске CD она дает диалоговое окно об отсутствие файла.
Понятно что оно реализовано в недрах WIN API, но все же
как от него избавиться, может кто с таким сталкивался,
эта штука в определеных моментах совсем ненужная и даже вредная...
← →
evvcom © (2010-03-19 10:33) [1]Напиши мелким и мягким
← →
{RASkov} © (2010-03-19 10:34) [2]> [0] z2000 (19.03.10 10:15)
Приведи пример кода, который выполняет описанное в [0]
← →
Anatoly Podgoretsky © (2010-03-19 10:51) [3]SetErrorMode
← →
z2000 (2010-03-19 12:36) [4]Anatoly Podgoretsky Спасибо!
← →
DVM © (2010-03-19 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;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2014.03.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.002 c