如何控制音量的大小和实现打开和关闭CD盖?(100分)

  • 主题发起人 主题发起人 douglasd
  • 开始时间 开始时间
D

douglasd

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何实现打开和关闭CD盖,以及如何控制音量的大小。下面代码是那里错了,为何不能实现上述功能。uses后也添加了mmsystem。
procedure TForm1.Button9Click(Sender: TObject);{打开CD-ROM}
begin

Mcisendstring('set cdaudiodo
or open',nil,0,handle);
end;


procedure TForm1.Button10Click(Sender: TObject);{关闭CD-ROM}
begin

Mcisendstring('Set cdaudiodo
or closed',nil,0,handle);
end;


procedure TForm1.TrackBar1Change(Sender: TObject);{音量大小}
begin

Auxsetvolume(1,(((255-Trackbar1.Position)shl 8)or((255-Trackbar1.Position)shl 24)));
end;
 
音量控制用 waveOutSetVolume

前两句应该没错,要不查查返回值,再用 mciGetErrorString 看看错误原因。。。。
 
弹出、关闭光驱的代码,适合一个系统中安装多个光驱,可以弹出任何一个
uses mmSysTem;

procedure CDRomOpen(bOpenDrive: Boolean;
cDrive: Char);
var
o: MCI_OPEN_PARMS;
status: MCI_STATUS_PARMS;
flags: DWord;
szDriveName: array[0..3] of Char;
begin

szDriveName := '?:';
ZeroMemory(@o, SizeOf(MCI_OPEN_PARMS));
szDriveName[0] := cDrive;

o.lpstrDeviceType := PChar(MCI_DEVTYPE_CD_AUDIO);
o.lpstrElementName := szDriveName;
flags := MCI_OPEN_TYPE or MCI_OPEN_TYPE_ID or MCI_OPEN_ELEMENT or MCI_OPEN_SHAREABLE;
if mciSendCommand(0, MCI_OPEN, flags, Cardinal(@o)) = 0 then

begin

status.dwItem := MCI_STATUS_READY;

if bOpenDrive then

mciSendCommand(o.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0)
else

mciSendCommand(o.wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);

mciSendCommand(o.wDeviceID, MCI_CLOSE, MCI_WAIT, 0);
end;

end;
 
多人接受答案了。
 
后退
顶部