Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Откл. или блок дисковода 3.5'' 
:(
    Опции темы
Albinos_x
Дата 8.12.2005, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 3
Всего: 108



где то так:
Код
...
...
type
  FileShareType = (DenyCompatibility, DenyAll, DenyWrite, DenyRead, DenyNone);
  FileAccessType = (ReadOnly, WriteOnly, ReadWrite);
  procedure SetFileAccess(AccessMode: FileAccessType; ShareMode: FileShareType);
  procedure ScanDir(Dir:string)
...
   procedure SetFileAccess(AccessMode: FileAccessType; ShareMode: FileShareType);
   begin
   FileMode:=ord(AccessMode) or (ord(ShareMode) shl 4);
   end;

 procedure ScanDir(Dir:string); 
 var
   s:string;
   SearchRec:TSearchRec;
   r:string;
 begin
   if Dir<>'' then if Dir[length(Dir)]<>'\' then Dir:=Dir+'\';
   if FindFirst(Dir+'*.*', faAnyFile, SearchRec)=0 then
     repeat
     if (SearchRec.name='.') or (SearchRec.name='..') then Continue;
     if (SearchRec.Attr and faDirectory) <> 0 then
        ScanDir(Dir+SearchRec.name)
        else
        begin
        s:=dir+SearchRec.name;    
        SetFileAccess(ReadWrite,DenyAll);    
        FileOpen(s,FileMode);
        end;
    // пропускаем накопившиеся сообщения виндовс
    Application.ProcessMessages;
   until FindNext(SearchRec)<>0;
   FindClose(SearchRec);
 end;
...


вызывать следует так:
Код
...
ScanDir('A:\');
...


Но предложенный вариант всё равно не решает проблему до конца. Его нужно вызывать при обращени к дисководу,т.е. всё равно без хука не обойтись. Можно конечно пробовать перебирать в таймере все окна и проверять не обращаяются ли они к флопу, есть ещё вариант, но это имхо будет извращенеи - в таймере запускать этот код.
Там в АПИ был вопрос... ты пытался с драйвером пообщаяться?

Это сообщение отредактировал(а) Albinos_x - 8.12.2005, 02:38


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
p0s0l
Дата 8.12.2005, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



Под Win2k и выше:
Код

var
  h : THandle;

begin
  h := CreateFile ('\\.\A:',
                   GENERIC_READ or GENERIC_WRITE,
                   0,
                   nil,
                   OPEN_EXISTING,
                   FILE_ATTRIBUTE_NORMAL,
                   0);
end;

Разблокировка:
Код
CloseHandle(h); // или просто закрыть прогу



--------------------
С уважением, г-н Посол.
PM   Вверх
Albinos_x
Дата 8.12.2005, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 3
Всего: 108



Цитата(p0s0l @ 8.12.2005, 10:11)
Под Win2k и выше:

мой поз ХР тоже работает... проверял...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Romikgy
Дата 8.12.2005, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Эт я предполагаю при вставленной дискете блокирутся, а если при проверке дискеты нет? а позже вставить?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
JohnnY
Дата 8.12.2005, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.8.2005
Где: Калининград

Репутация: нет
Всего: нет



p0s0l, большое, спасибо за код, мне это очень помогло!!!
И всем остальным тоже спасибо что откликнулись на мой вопрос...
PM MAIL WWW   Вверх
p0s0l
Дата 8.12.2005, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



Цитата(Romikgy @ 8.12.2005, 16:40)
Эт я предполагаю при вставленной дискете блокирутся, а если при проверке дискеты нет? а позже вставить?
Да вроде и без дискеты работает...


--------------------
С уважением, г-н Посол.
PM   Вверх
Albinos_x
Дата 8.12.2005, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 3
Всего: 108



Цитата(Romikgy @ 8.12.2005, 16:40)
а если при проверке дискеты нет

Цитата(p0s0l @ 8.12.2005, 18:40)
Да вроде и без дискеты работает...

хандл вернётся равным 0, ошибок выскакивать не должно


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
bartram
Дата 9.12.2005, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



JohnnY, а вы представляете как это всё будет тормозить?! Особенно если на дискете много мелких файлов smile


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.