Главная страница
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.023 c
7-1072953385
DelphiN!
2004-01-01 13:36
2004.03.28
Скрыть процесс от TaskMenagera в NT-ях


3-1077631653
Floppy
2004-02-24 17:07
2004.03.28
ADO - MSAccess. Не могу


7-1073820337
Александр из Минска
2004-01-11 14:25
2004.03.28
Теория по сервисам


1-1078585827
InfoCar1
2004-03-06 18:10
2004.03.28
кнопка [х] в заголовке окна


14-1078045315
Verg
2004-02-29 12:01
2004.03.28
Юбилей - миллион...