Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как обнаружить, что вставили дискету? [D6, WinXP]


stals ©   (2005-09-20 15:47:00) 

Народ, как это проделать, есть ли какие сообщения от винды в этот момент? Вобщем, как просечь момент, когда ее вставили, но при этом не использовать вечный цикл на проверку доступноси дисковода (чтобы не хрюкал все время) ?


Brother   (2005-09-21 06:52:00) [1]

AutoRun для флопаря? Оригинально!
НЕ МУЧАЙТЕ ФЛОП!
Гловки сотрутся!
:)
ик


Джо   (2005-09-20 22:31:00) [2]


>  [5] DrPass ©   (20.09.05 21:35)

Садюга :)


DrPass   (2005-09-20 21:35:00) [3]

Вставь в вечный цикл проверки дисковода Sleep(2000). Хрюкать будет заметно меньше


Джо   (2005-09-20 17:27:00) [4]


>  [2] stals ©   (20.09.05 16:25)
> Дык а можно как-нибудь хрюканье тогда поменьше сделать?
> :)

Никак не можна.


Big Joe   (2005-09-20 16:51:00) [5]

function DiskInDrive(const Drive: char): Boolean;
var
 DrvNum: byte;
 EMode: Word;
begin
 result := true; // было false
 DrvNum := ord(Drive);
 if DrvNum >= ord('a') then
   dec(DrvNum, $20);
 EMode := SetErrorMode(SEM_FAILCRITICALERRORS);
 try
   while DiskSize(DrvNum - $40) = -1 do
   begin // при неудаче выводим диалог
     if (Application.MessageBox('Диск не готов...' + chr(13) + chr(10) +
       'Повторить?', PChar('Диск ' + UpperCase(Drive)), mb_OKCANCEL +
       mb_iconexclamation {IconQuestion}) = idcancel) then
     begin
       Result := false;
       Break;
     end;
   end;
 finally
   SetErrorMode(EMode);
 end;
end;

И еще поставь нормальную дискету чтоб пол часа не трещала.


stals   (2005-09-20 16:25:00) [6]

Дык а можно как-нибудь хрюканье тогда поменьше сделать? :)
Чтоб один раз дернулся проверить и успокоился, а то он начинает полчаса трещать...


Джо   (2005-09-20 16:04:00) [7]

На PC - никак. Аппаратно не поддерживается без прямого обращения. На Маках - да, поддерживается контроллером и самим устройством привода.


Наверх

Титульная страница Поиск, карта сайта Написать письмо