Форум: "WinAPI";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизКак задвинуть дверцу CDROM обратно Найти похожие ветки
← →
Зяц (2004-08-19 01:36) [0]подскажите, как сделать сабж, жилательно с исходником.
Спасибо большое заранее.
← →
jack128 © (2004-08-19 01:49) [1]в FAQ"е было..
← →
Алхимик © (2004-08-19 01:49) [2]Открытие\закрытие СДРОМа:
mciSendString("set CDAudio door open", NULL, 0, NULL);
mciSendString("set CDAudio door close", NULL, 0, NULL);
В общем случае параметр MCISendString() - сообщение на MCI(Media Control Interface) устройство.
← →
Зяц (2004-08-19 10:17) [3]Спасиба, но мне надо на соседнем компьютере.
Там 2 штуки CD драйвов.
Как сделать?
← →
nikkie © (2004-08-19 10:25) [4]Microsoft Speech API
← →
Зяц (2004-08-19 10:43) [5]nikkie © (19.08.04 10:25) [4]
Что это такое, как использовать для закрытия "подставки под кофе"?
← →
Anatoly Podgoretsky © (2004-08-19 10:47) [6]Spech.Play("door close");
← →
nikkie © (2004-08-19 11:42) [7]>[6] Anatoly Podgoretsky
неправильно.
SpeechEngine.SayIt("hey, close the door, dude!")
должно подействовать...
← →
Зяц (2004-08-19 12:01) [8]Мне надо, серьёзно, но вы шутите, злые люди.
Help me please!
← →
Anatoly Podgoretsky © (2004-08-19 13:20) [9]Надо понимать, что FAQ ты посмотрел и тебе не подошло, а чем именно?
← →
Зяц (2004-08-19 13:42) [10]FAq посмотрел, там нет ничего полезного для моей задаче :(
← →
Зяц (2004-08-19 16:38) [11]У меня не получается. Помогите.
Я делаю так:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
mciSendString("set CDAudio door open", NULL, 0, NULL);
end;
end.
Нажимаю ctlr-F9, она пишет:
[Error] Unit1.pas(28): Undeclared identifier: "mciSendString"
[Error] Unit1.pas(28): Illegal character in input file: """ ($22)
[Error] Unit1.pas(28): Missing operator or semicolon
[Fatal Error] Project1.dpr(5): Could not compile used unit "Unit1.pas"
Что я делаю не так?
← →
nikkie © (2004-08-19 16:59) [12]компилятор поменяй. в твоем ошибка.
← →
nikkie © (2004-08-19 17:00) [13]хотя... может и твой сойдет. попробуй переименовать Unit1.pas в Unit1.cpp. должно помочь!
← →
Digitman © (2004-08-19 17:05) [14]
> Зяц
прежде чем елозить дверцами чужих приводов, неплохо было бы почитать хоть что-нибудь про Паскаль
← →
-SeM- (2004-08-19 17:12) [15]Да, веселая ветка :)
← →
Pul (2004-08-19 17:24) [16]
> nikkie © (19.08.04 11:42) [7]
> >[6] Anatoly Podgoretsky
> неправильно.
> SpeechEngine.SayIt("hey, close the door, dude!")
> должно подействовать...
SpeechEngine.SayIt("Осторожно двери закрываются!")
← →
Зяц (2004-08-19 18:28) [17]Неужели никто не знает!! Не верю!
Heeeeeeelp!
← →
rOOse © (2004-08-19 18:43) [18]Добавь MMSystem в Uses
← →
Анатолий (2004-08-19 19:09) [19]Не отчаивайтесь. Для начала попробуйте так:
unit Door;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, mmSystem;
type
TForm1 = class(TForm)
Open: TButton;
Close: TButton;
procedure OpenClick(Sender: TObject);
procedure CloseClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.OpenClick(Sender: TObject);
begin
mciSendString(PChar("Set cdaudio Door Open Wait"), nil, 0, 0);
ShowMessage("The door is opened.. Wayyy!");
end;
procedure TForm1.CloseClick(Sender: TObject);
begin
mciSendString(PChar("Set CDAudio door close"), nil, 0, 0);
ShowMessage("In future You can close doors on any computer. But you should teach Pascal. Ok?");
end;
end.
Это точно откомпилируется.
← →
Зяц (2004-08-19 20:07) [20]Большая спасибо, это компилируется и дверца открывается :) но не закрывается :(
Но всё равно спасиба.
← →
grom (2004-08-19 20:18) [21]задвинуть дверцу CDROM
function CloseCD(Drive:string):Boolean;
var
Res : MciError;
OpenParm: TMCI_Open_Parms;
Flags,DeviceID : Word;
begin
Result:=false;
Flags:=mci_Open_Type or mci_Open_Element;
with OpenParm do begin
dwCallback := 0;
lpstrDeviceType := "CDAudio";
lpstrElementName := PChar(Drive+":");
end;
Res := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
if Res<>0 then exit;
DeviceID:=OpenParm.wDeviceID;
try
Res:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
if Res=0 then exit;
Result:=True;
finally
mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
end;
end;
uses mmsystem;
← →
OSokin © (2004-08-19 20:56) [22]Закрыть:
mciSendString("set cdaudio door open", nil, 0, 0);
Открыть:
mciSendString("set cdaudio door open", nil, 1, 0);
А чтобы проверить, есть ли диск в приводе, юзай GetDiskFreeSpace. Там можно выбрать диск любой
← →
Зяц (2004-08-19 21:34) [23]Огромное спасиба, вся работаеет. Теперь буду изучать паскаль и если не понятка встретиться, обязательно спрошу вас, хорошие вы мои ребяты!
Спасиба всем!
← →
nikkie © (2004-08-19 22:01) [24]мир, дружба, фестиваль. а мастера Дельфи - самые отзывчивые во всем рунете.
← →
(AD)acid (2004-08-30 08:30) [25]Я предлагаю особо извращённый способ работающий только в WinNT/2k/XP
И это не шутка!!!!
const
IOCTL_STORAGE_EJECT_MEDIA = $2D4808;
IOCTL_STORAGE_LOAD_MEDIA = $2D480C;
procedure OpenCD(Drive: Char);
Var
hDev:Cardinal;
hResult:LongBool;
Junk:Cardinal;
begin
hDev:=CreateFile(PChar("\\.\"+Drive+":"),
GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil,
OPEN_EXISTING,
0,
0);
if hDev = INVALID_HANDLE_VALUE then
begin
MessageBox(0,PChar("Программа не может получить доступ к устройству "+Drive+":"),"TestProg",MB_OK or MB_ICONERROR or MB_TASKMODAL);
Exit;
end;
hResult:=DeviceIoControl(hDev,
IOCTL_STORAGE_EJECT_MEDIA,
nil,
0,
nil,
0,
Junk,
nil);
if hResult = False then
begin
MessageBox(0,"Ошибка при работе с устройством!","TestProg",MB_OK or MB_ICONERROR or MB_TASKMODAL);
end;
CloseHandle(hDev);
end;
procedure CloseCD(Drive: Char);
Var
hDev:Cardinal;
hResult:LongBool;
Junk:Cardinal;
begin
hDev:=CreateFile(PChar("\\.\"+Drive+":"),
GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil,
OPEN_EXISTING,
0,
0);
if hDev = INVALID_HANDLE_VALUE then
begin
MessageBox(0,PChar("Программа не может получить доступ к устройству "+Drive+":"),"TestProg",MB_OK or MB_ICONERROR or MB_TASKMODAL);
Exit;
end;
hResult:=DeviceIoControl(hDev,
IOCTL_STORAGE_LOAD_MEDIA,
nil,
0,
nil,
0,
Junk,
nil);
if hResult = False then
begin
MessageBox(0,"Ошибка при работе с устройством!","TestProg",MB_OK or MB_ICONERROR or MB_TASKMODAL);
end;
CloseHandle(hDev);
end;
← →
grom (2004-08-30 16:33) [26]извращённый способ и правда работает проверил на ХР
а чем он лучше широко распространнёного
function CloseCD(Drive:string):Boolean;
grom (19.08.04 20:18) [21]
← →
Дмитрий Ботвин (2004-08-30 16:54) [27](АD)acid, а твой "извращенный" способ и для удалённых компов работает???
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.036 c