![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обнаружить, что вставили дискету? [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 - никак. Аппаратно не поддерживается без прямого обращения. На Маках - да, поддерживается контроллером и самим устройством привода.