Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Вниз

CD-Rom и все что с ним связано...   Найти похожие ветки 

 
BaRToV   (2003-04-13 13:13) [0]

Облазив кучу форумов так и не нашел толковых ответов на
1) Как узнать открыт ли CD-R/RW.
2) Как открыть/закрыть CD-R/RW по указанному диску, т.е. если несколько CD в системе ("F:","G:").

mciSendString("Set cdaudio door closed wait", nil, 0, handle);
Закрывает только CD-R, на CD-RW это не дейтсвует.
При этом закроет все CD-R, а не указанный.

Заранее благодарен.


 
Giemgo   (2003-04-13 13:23) [1]

Вау. А ты не объяснишь, зачем тебе такая супер программа, которая знает открыт CD или нет ? Опять типа подруг поразить ?

Фигней ты маешься. Приведи хоть один пример распространяемого продукта, где используются такие функции?


 
Song   (2003-04-13 13:41) [2]

Есть одна из MCI команд, которая определяет статус. По-моему это status. Но она работает криво. Не всегда определяет и только после того как пользователь вставит или вытащит диск. Связано это с тем, что для системы состояние, когда нет диска и состояние, когда CD-ROM выдвинут - одно и тоже.


 
BaRToV   (2003-04-13 13:46) [3]

> А ты не объяснишь, зачем тебе такая супер программа...
Это не пргограмма, а компонент для KOL.

Ну ведь Total Commander делает это, а ведь он написан на Д5...


 
BaRToV   (2003-04-13 15:31) [4]

Что-то слабовато ;-(


 
BaRToV   (2003-04-14 00:54) [5]

Жалко что ни кто не занет ответа...


 
NA   (2003-04-14 01:10) [6]

На iXBT порядка пяти-шести тем об этом. Минимум три из них достаточно информативные. Все достаточно старые.


 
Songoku   (2003-04-14 01:12) [7]

procedure OpenCD(w:pchar);
var
OpenParm:MCI_OPEN_PARMS;
DeviceID:DWORD;
begin
OpenParm.dwCallback:=0;
OpenParm.lpstrDeviceType := "CDAudio";
OpenParm.lpstrElementName := Pchar(w+":");
mciSendCommandA(0, MCI_OPEN, MCI_OPEN_TYPE or MCI_OPEN_ELEMENT, Longint(@OpenParm));
DeviceID:=OpenParm.wDeviceID;
mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
mciSendCommand(DeviceID, MCI_CLOSE, MCI_OPEN_TYPE or MCI_OPEN_ELEMENT, Longint(@OpenParm));
end;

procedure CloseCD(w:pchar;f:HWnd);
var
OpenParm:MCI_OPEN_PARMS;
DeviceID:DWORD;
begin
OpenParm.dwCallback:=0;
OpenParm.lpstrDeviceType := "CDAudio";
OpenParm.lpstrElementName := pchar(w+":");
mciSendCommandA(0, MCI_OPEN, MCI_OPEN_TYPE or MCI_OPEN_ELEMENT, Longint(@OpenParm));
DeviceID:=OpenParm.wDeviceID;
mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
mciSendCommand(DeviceID, MCI_CLOSE, MCI_OPEN_TYPE or MCI_OPEN_ELEMENT, Longint(@OpenParm));
end;


Скажи если работает на двух????


 
BaRToV   (2003-04-14 01:36) [8]

Как посмотрю (сегодня утром) так сразу сообщу!
Если у кого-то есть еще идеи пишите.


 
BaRToV   (2003-04-14 02:01) [9]

2 NA ©

>На iXBT порядка пяти-шести тем об этом. Минимум три из них достаточно информативные. Все достаточно старые.

че-то на http://www.ixbt.com/ я не нашел, может ссылки подкинишь?...


 
BaRToV   (2003-04-14 02:58) [10]

2 Songoku ©

Код работает отлично, как для CD-R, так и для CD-RW.
Спасибо!

Осталось только узнать открыт ли CD-R/RW?!...


 
Черт   (2003-04-14 04:33) [11]

Удалено модератором


 
BaRToV   (2003-04-14 11:55) [12]

> Осталось только узнать открыт ли CD-R/RW?!...

Немного подправим:
procedure CloseCD(Drive: string);

function DriveReady(Drv: string): Boolean;
var
NotUsed: DWORD;
begin
Result := GetVolumeInformation(PChar(Drv), nil, 0, nil,
NotUsed, NotUsed, nil, 0);
end;

...

Drv := "g:";

if (GetDriveType(PChar(Drv + "\")) = DRIVE_CDROM) and
(not DriveReady(Drv + "\")) then
CloseCD(Drv[1]);

Пожалуй тема закрыта...
Всем спасибо!


 
BaRToV   (2003-04-19 10:51) [13]

http://delphimaster.net/view/7-1050226093/


 
Жук   (2003-04-21 11:06) [14]


> BaRToV (14.04.03 11:55)
> Пожалуй тема закрыта...

Почти закрыта. Осталось определить лежит ли диск в подстаканнике, когда тот открыт, или нет.



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.016 c
7-97901
YuVoUA
2003-04-21 16:49
2003.06.30
Копирование из clipboard с указанием языка текста


14-97888
kronprince
2003-06-13 13:51
2003.06.30
Может ли это быть случайностью ???


1-97615
Klez-X
2003-06-19 13:50
2003.06.30
Работа с реестром


1-97603
denis24
2003-06-17 10:34
2003.06.30
функция STR()


14-97829
Alex_x
2003-06-11 15:51
2003.06.30
неменяется значение RadioButton





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский