![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать о положении лотка СD-ROM [D7]
Olegator_o © (2003-12-15 01:19:00)Проблема в том, что хочу управлять лотком одной кнопкой.
Разными получается, например:
mciSendString('Set cdaudio door closed wait',nil,0,handle);
Соответственно door open.
HELP!!!
Polevi (2004-01-13 14:07:00) [1]>Anatoly Podgoretsky © (07.01.04 21:04) [6]
каждый крутой програмер управляет лотком своей собственной "прогой", на приводе нажимать это для ламеров :)
DVM (2004-01-13 13:07:00) [2]ASPI используйте. Там есть исчерпывающая инфа о диске, приводе, и.т.д - сотни параметров можно получить. Я уже о положениии лотка молчу.
Oleg (2004-01-13 00:51:00) [3]Спасибо всем!!!
Зарываюсь в книжки, буду много читать, может поумнею...
Oleg (2004-01-10 03:15:00) [4]Для пробы накидал следующее:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, MMSystem, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
err : longint;
errString : array[0..255] of char;
begin
err := mciSendString('Set cdaudio door close wait',nil,0,handle);
if err <> 0 then
begin
MciGetErrorString(err, @errString, sizeof(errString));
Memo1.Lines.Add(errString);
Memo1.Lines.Add(IntToStr(err));{для проверки значения err}
mciSendString('Set cdaudio door open wait',nil,0,handle);
end
else
begin
Memo1.Lines.Add(IntToStr(err));
mciSendString('Set cdaudio door close wait',nil,0,handle);
end;
end;
end.
err всегда = 259,
errString молчит,
калитка открывается и больше ни на что не реагирует, полный облом :-(
Я так понимаю, что въехал не туда, и не на той лошади, но почему в таком случае err = 259 ?
anana][ (2004-01-09 15:51:00) [5]Можна каждый раз находить № болванки если номер есть то выдвигаем...
FAQ
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=991298141&n=15
Intell (2004-01-09 11:08:00) [6][11]
Согласен. Больше возможностей. Да и красиво можно оформить, тогда точно будешь <выглядеть для своего ребёнка супер-пупер папочкой>.
Nikolay M. (2004-01-09 10:29:00) [7]
> В консольном почему-то не катит... Пытаюсь разобраться...
В консольном приложении нет окна, следовательно, нет и дескриптора окна, следовательно, сообщения (WM_DEVICECHANGE в том числе) к нему не приходят.
Попробуй в обычном приложении, как говорится, почуйствуйте разницу :)
Oleg (2004-01-09 02:28:00) [8]
> Intell (07.01.04 21:14) [7]
> По видимому пишется медиаплеер
Вообще-то, идея такая: консольное приложение (открыть-закрыть) запускается с иконки на раб. столе, т.к. системник расположен неудобно и приходится корячиться. Но дело даже не в этом, просто хочется выглядеть для своего ребёнка супер-пупер папочкой, хотя я полный чайник в это деле, да и самому очень интересно, так что дело принципа.
> Rouse_ © (08.01.04 11:55) [9]
В консольном почему-то не катит... Пытаюсь разобраться...
Rouse_ (2004-01-08 11:55:00) [9]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MMSystem;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
procedure CD(var Msg: TMessage); message WM_DEVICECHANGE;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.CD(var Msg: TMessage);
begin
case Msg.WParam of
32772: Caption := 'Open';
32768: Caption := 'Close';
else
Caption := 'Unknown';
end;
end;
end.
Желаю успехов
Rouse_ (2004-01-08 11:54:00) [10]> [6] Anatoly Podgoretsky © (07.01.04 21:04)
А если ловить соответствующее сообщение о открытии - закрытии лотка - побоку ничего не будет ;)
Intell (2004-01-07 21:14:00) [11]так не интересно. По видимому пишется медиаплеер с открытием лотка? Я угадал?
Anatoly Podgoretsky (2004-01-07 21:04:00) [12]DVM © (07.01.04 20:33) [5]
Ну да, я возьму нажму кнопку на приводе и все твое побоку
DVM (2004-01-07 20:33:00) [13]При старте свое программы надо задвинуть лоток (неважно задвинут он был до этого или нет). Дальше задвигать-выдвигать одной кнопкой и состояние его будет известно.
Узнать же состояние лотка, а также наличие/отсутствие диска и его тип можно через ASPI команды.
Oleg (2004-01-07 15:22:00) [14]
> >if b then
И, вообще, откуда выковырять системные переменные такого рода?
Где бы прочитать про это? Кто знает, киньте, плз, ссылочку,
а то в моём Мухосранске насчёт литературы прямо труба...
Cardinal (2003-12-21 17:51:00) [15]>if b then
А как узнать b?
(2003-12-15 11:46:00) [16]Удалено модератором
Piople (2003-12-15 08:56:00) [17]procedure .....
var
b : Boolean;
begin
if b then
mciSendString('Set cdaudio door closed wait',nil,0,handle);
else
mciSendString('Set cdaudio door open wait',nil,0,handle);
b := not b;
end;