Форум: "Основная";
Текущий архив: 2002.09.19;
Скачать: [xml.tar.bz2];
ВнизКак отловить собыитие, когда в CD-ROM привод запихали диск. Найти похожие ветки
← →
Sour (2002-09-07 19:14) [0]Как отловить собыитие, когда в CD-ROM привод запихали диск.
ЗЫ Причем неважно есть ли на нем autorun или нет....
← →
Mister X (2002-09-07 20:05) [1]Нда, даже Windows не знает, как это отловить.
← →
Sour (2002-09-07 21:41) [2]1.Да, а как выполняется автозапуск??
2.Есть такая прога AudioGrabber, она после вставки(смены) диска выводит на эран эго треки. Неужели она на таймере опрашивает CD-ROM?????
← →
Keymaster (2002-09-07 22:50) [3]Мда...
мне тож интересно стало.......
пойду хелп по апи читать...
← →
Poirot (2002-09-08 09:05) [4]Где то тут было сообщение, но блин непомню!!!
← →
Sour (2002-09-08 13:41) [5]Господа, может кто-нибудь нашел или все-таки знает сообщение...
← →
Mazenrat (2002-09-08 18:58) [6]Как отловить данное событие??? Хм. Может, проверка - есть ли диск в СД-приводе - поможет?
uses SysUtils;
//Ищем диск СДюка
function FindCD:Integer;
var
i, DType:integer;
str:string;
begin
Result:=0;
for i:=65 to 90 do begin
str:=chr(i)+":\";
DType:=GetDrivetype(PChar(str));
case DType of
0: drive:=0;
1: drive:=1;
DRIVE_CDROM : drive:=i;
end;
if not ((DType=0) or (Dtype=1)) then
Result:=drive;
end;
end;
//Проверяем есть ли диск в СДюке
function DiskInDrive(Drive: Char): Boolean;
var
ErrorMode: word;
begin
if Drive in ["a".."z"] then Dec(Drive, $20);
if not (Drive in ["A".."Z"]) then
raise EConvertError.Create("Not a valid drive ID");
ErrorMode := SetErrorMode(SEM_FailCriticalErrors);
try
if DiskSize (Ord(Drive) - $40) = -1 then Result := False
else Result := True;
finally
SetErrorMode(ErrorMode);
end;
end;
//Применение
if DiskInDrive(chr(findcd)) = true then
messageBox(0,""Диск в СД-приводе","Title",MB_OK);
← →
Ученик (2002-09-08 19:04) [7]Сообщение приходит WM_DEVICECHANGE
← →
VID (2002-09-08 19:06) [8]Осуществить мониторинг (folder monitor) драйва. При поступлении событий (надо проверить какие события эффективнее всего использовать), проверить существование диска в драйве DirectoryExists (<cd drive>)
← →
VSergeySPB (2002-09-08 19:36) [9]Можно попробовать покопать в направлении: - сообщения: MM_MCINOTIFY, WM_DEVICECHANGE. Функции: mciGetYieldProc, mciSetYieldProc.
Возможно это оно.
=Удачи всем" :)
← →
VID (2002-09-08 20:47) [10]Вот вспомнил:
Ловишь событие WM_DEVICECHANGE
Если WPARAM = 32772 то открыли CD-ROM
Если WPARAM = 32768 то закрыли...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c