![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как узнать что вставили новый CD [D7, WinXP]
pirat © (2003-11-14 22:53:00)
Как узнать момент вставляния в CD нового диска? Я так понимаю что по таймеру нужно вызывать какую-то функция API, но вот какую???
Еще подозреваю что на каждом CDROM защит уникальный ID, по которому и можно узнать о смене диска, так ли это ?
Прошу прощения если звучит чуть по ламерски, просто даже не знаю куда копать :-)
pirat (2003-11-18 18:37:00) [1]
угу ... а потом я еще нашел функцию VolumeID которая возвращает как раз то что мне надо :)
Pirate (2003-11-18 15:08:00) [2]
Брат! Вот моя идея:
function DirectoryExists("?:\"):Boolean;
проверяет существование диска "?"
DVM (2003-11-17 18:38:00) [3]
> Усе время вызывать getvolumeinformation ??
да, надежнее всего по таймеру. Работает даже с теми CD приводами у которых сломан (отсутствует) контакт, отвечающий за индикацию смены диска.
pirat (2003-11-17 18:32:00) [4]
вот поторопился я спасибо говорить ...
изыскания показали что вешеприведенный код действительно реагирует на появление флэшки, но на вставляние CD он ноль реакции. Так как же узнать что вставили новый CD ? Усе время вызывать getvolumeinformation ??
Pirat (2003-11-15 01:02:00) [5]
спасибо!
Dimaxx (2003-11-15 00:15:00) [6]
const DBT_DEVICEARRIVAL = $8000;
const DBT_DEVICEQUERYREMOVE = $8001;
const DBT_DEVICEQUERYREMOVEFAILED = $8002;
const DBT_DEVICEREMOVEPENDING = $8003;
const DBT_DEVICEREMOVECOMPLETE = $8004;
const DBT_DEVICETYPESPECIFIC = $8005;
const DBT_CONFIGCHANGED = $0018;
procedure TForm1.WMDeviceChange(var Message: TMessage);
var S: string;
begin
{Do Something here}
case Message.wParam of
DBT_DEVICEARRIVAL: S:="A device has been inserted and is now available";
DBT_DEVICEREMOVECOMPLETE: S:="Device has been removed";
changed"
end;
ShowMessage(S);
inherited;
end;