Текущий архив: 2004.03.28;
Скачать: CL | DM;
Вниз
Как узнать о положении лотка СD-ROM Найти похожие ветки
← →
Olegator_o (2003-12-15 01:19) [0]Проблема в том, что хочу управлять лотком одной кнопкой.
Разными получается, например:
mciSendString("Set cdaudio door closed wait",nil,0,handle);
Соответственно door open.
HELP!!!
← →
Piople © (2003-12-15 08:56) [1]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;
← →
имя (2003-12-15 11:46) [2]Удалено модератором
← →
Cardinal © (2003-12-21 17:51) [3]>if b then
А как узнать b?
← →
Oleg (2004-01-07 15:22) [4]
> >if b then
И, вообще, откуда выковырять системные переменные такого рода?
Где бы прочитать про это? Кто знает, киньте, плз, ссылочку,
а то в моём Мухосранске насчёт литературы прямо труба...
← →
DVM © (2004-01-07 20:33) [5]При старте свое программы надо задвинуть лоток (неважно задвинут он был до этого или нет). Дальше задвигать-выдвигать одной кнопкой и состояние его будет известно.
Узнать же состояние лотка, а также наличие/отсутствие диска и его тип можно через ASPI команды.
← →
Anatoly Podgoretsky © (2004-01-07 21:04) [6]DVM © (07.01.04 20:33) [5]
Ну да, я возьму нажму кнопку на приводе и все твое побоку
← →
Intell © (2004-01-07 21:14) [7]так не интересно. По видимому пишется медиаплеер с открытием лотка? Я угадал?
← →
Rouse_ © (2004-01-08 11:54) [8]> [6] Anatoly Podgoretsky © (07.01.04 21:04)
А если ловить соответствующее сообщение о открытии - закрытии лотка - побоку ничего не будет ;)
← →
Rouse_ © (2004-01-08 11:55) [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.
Желаю успехов
← →
Oleg (2004-01-09 02:28) [10]
> Intell (07.01.04 21:14) [7]
> По видимому пишется медиаплеер
Вообще-то, идея такая: консольное приложение (открыть-закрыть) запускается с иконки на раб. столе, т.к. системник расположен неудобно и приходится корячиться. Но дело даже не в этом, просто хочется выглядеть для своего ребёнка супер-пупер папочкой, хотя я полный чайник в это деле, да и самому очень интересно, так что дело принципа.
> Rouse_ © (08.01.04 11:55) [9]
В консольном почему-то не катит... Пытаюсь разобраться...
← →
Nikolay M. © (2004-01-09 10:29) [11]
> В консольном почему-то не катит... Пытаюсь разобраться...
В консольном приложении нет окна, следовательно, нет и дескриптора окна, следовательно, сообщения (WM_DEVICECHANGE в том числе) к нему не приходят.
Попробуй в обычном приложении, как говорится, почуйствуйте разницу :)
← →
Intell © (2004-01-09 11:08) [12][11]
Согласен. Больше возможностей. Да и красиво можно оформить, тогда точно будешь <выглядеть для своего ребёнка супер-пупер папочкой>.
← →
anana][ (2004-01-09 15:51) [13]Можна каждый раз находить № болванки если номер есть то выдвигаем...
FAQ
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=991298141&n=15
← →
Oleg (2004-01-10 03:15) [14]Для пробы накидал следующее:
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 ?
← →
Oleg (2004-01-13 00:51) [15]Спасибо всем!!!
Зарываюсь в книжки, буду много читать, может поумнею...
← →
DVM © (2004-01-13 13:07) [16]ASPI используйте. Там есть исчерпывающая инфа о диске, приводе, и.т.д - сотни параметров можно получить. Я уже о положениии лотка молчу.
← →
Polevi © (2004-01-13 14:07) [17]>Anatoly Podgoretsky © (07.01.04 21:04) [6]
каждый крутой програмер управляет лотком своей собственной "прогой", на приводе нажимать это для ламеров :)
Страницы: 1 вся ветка
Текущий архив: 2004.03.28;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.023 c