1

源程序下载
1：如何启动/关闭CD-ROM的自动运行
在Private声明部分说明一个SetCDAutoRun(AAutoRun:Boolean)用来设置是否让光盘自动运行，AAutoRun=True；自动运行；AAutoRun=False；不能自动运行。
SetCDAutoRun(AAutoRun:Boolean)的过程如下：
Procedure TForm1.SetCDAutoRun(AAutoRun:Boolean);
const
DoAutoRun : array[Boolean] of Integer = (0,1);
var
Reg:TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.KeyExists('System\CurrentControlSet\Services\Class\CDROM') then
if Reg.OpenKey('System\CurrentControlSet\Services\Class\CDROM',FALSE) then
Reg.WriteBinaryData('AutoRun',DoAutoRun[AAutoRun],1);
finally
Reg.Free;
end;
MessageBox(handle,'你的设置在Windows重新启动后将生效','信息',MB_IconInformation+MB_OK);
End ;
2：如何判断光驱中是否有光盘
如果函数返回值为真，说明有盘，否则说明没有。
function DiskInDrive(Drive: Char): Boolean;
var
ErrorMode: word;
begin
if Drive in ['a'..'z'] then Dec(Drive, $20); //make it upper case
if not (Drive in ['A'..'Z']) then //make sure it's a letter
raise
EConvertError.Create('Not a valid drive ID'); //turn off critical errors
ErrorMode :=SetErrorMode(SEM_FailCriticalErrors);
try
if DiskSize(Ord(Drive) - $40)=-1 then //drive 1=a, 2=b, 3=c, etc.
Result :=False
else Result :=True;
finally
SetErrorMode(ErrorMode); //restore old error mode
End ;
end;
3：如何打开和关闭计算机的光驱

要打开和关闭计算机的光驱，只要向MCI发送一条mciSendString指令即可，别忘了，在Uses里面加上mmsystem。程序代码如下：
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
mciSendString('Set cdaudio door open wait', nil, 0, handle); //打开光驱
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
mciSendString('Set cdaudio door closed wait', nil, 0, handle); //关闭光驱
end;
4：获得磁盘的类型
Function GetDiskType(Disk : Char) : String ;
var
x:integer;
driver:pchar;
TempStr : String ;
begin
driver:=Pchar(Disk+':\'); //要显示的驱动器名
x := GetDriveType(driver);
Case x of
2: Result := '该驱动器是可移动驱动器';
3: Result := '该驱动器是固定驱动器';
4: Result := '该驱动器是网络驱动器';
5: Result := '该驱动器是CD-ROM驱动器';
6: Result := '该驱动器是虚拟驱动器';
Else Result := '该驱动器无效';
End;
end;
5：获得磁盘的容量
Function GetDiskLarge(Disk : Char) : String;
var
driver:pchar;
sec1, byt1, cl1, cl2:longword;
begin
driver:=PChar(Disk+':\'); //要显示的驱动器名
GetDiskFreeSpace(driver, sec1, byt1, cl1, cl2);
cl1 := cl1 * sec1 * byt1;
cl2 := cl2 * sec1 * byt1;
Result := '该驱动器总共容量' + Formatfloat('###,##0',cl2) + '字节' +#13+#13+
'该驱动器可用容量' + Formatfloat('###,##0',cl1) + '字节' ;
end;
源程序下载