Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
4-1093810138
ВАП
2004-08-30 00:08
2004.10.03
запуск


6-1090908972
MetalFan
2004-07-27 10:16
2004.10.03
IdTCPClient&amp;IdTCPServer VS ServerSocket&amp;ClientSocket


14-1095161406
frankvi
2004-09-14 15:30
2004.10.03
PDF Viewer


14-1095151477
Dmitriy O.
2004-09-14 12:44
2004.10.03
Лысина - это полянка, вытоптанная мыслями.


14-1095143616
Aspi
2004-09-14 10:33
2004.10.03
Любовь с первого взгляда.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский