Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.032 c
1-1078405307
Demon_mhm
2004-03-04 16:01
2004.03.28
Конструктор класса, запуск с параметрами и без


1-1078910381
Ирайзор
2004-03-10 12:19
2004.03.28
Rich edit , цвета и архивы


14-1078388311
Tornado
2004-03-04 11:18
2004.03.28
И куда делся мой вопрос??????


8-1068984456
Gaus
2003-11-16 15:07
2004.03.28
MediaPlayer


3-1077179718
SerKom
2004-02-19 11:35
2004.03.28
В чем разница в TSQL "AS" от "="?