📄 project2.~dpr
字号:
program Project2;
uses
Windows,system;
{$R *.res}
const
FILE_DEVICE_MASS_STORAGE = $2D;
METHOD_BUFFERED = 0;
FILE_ANY_ACCESS = 0;
FILE_READ_ACCESS = 1;
FILE_WRITE_ACCESS = 2;
IOCTL_STORAGE_EJECT_MEDIA = (FILE_DEVICE_MASS_STORAGE shl 16) or
(FILE_READ_ACCESS shl 14) or
($202 shl 2) or
(METHOD_BUFFERED);
IOCTL_STORAGE_LOAD_MEDIA = (FILE_DEVICE_MASS_STORAGE shl 16) or
(FILE_READ_ACCESS shl 14) or
($203 shl 2) or
(METHOD_BUFFERED);
IOCTL_STORAGE_CHECK_VERIFY = (
(FILE_DEVICE_MASS_STORAGE shl 16) or (FILE_READ_ACCESS shl 14) or
($200 shl 2) or METHOD_BUFFERED);
var
cd: THandle;
ret: Longword;
str: string;
drivers: integer;
driver: char;
i, temp: integer;
fs:Variant;
begin
// Note: Stefan opened CD-ROM with GENERIC_READ OR GENERIC_WRITE.
// That should be correct according to MS documentation but was not
//working for me.
// This (just GENERIC_READ) seems to be working on all computers.
drivers := getlogicaldrives;
temp := (1 and drivers);
for i := 0 to 25 do //26个英文字母
begin
if temp = 1 then
begin
driver := char(i + integer('a'));
str := driver + ':';
if getdrivetype(pchar(str)) = DRIVE_CDROM then
begin
cd := CreateFile(PChar('\\.\' + str), GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
if CD <> INVALID_HANDLE_VALUE then
begin
// eject
if not DeviceIoControl(cd, IOCTL_STORAGE_CHECK_VERIFY, nil, 0, nil, 0, ret, nil)
then
begin
DeviceIoControl(cd, IOCTL_STORAGE_EJECT_MEDIA, nil, 0, nil, 0, ret, nil) ;
fs := CreateObject("scripting.filesystemobject")
end;
// else DeviceIoControl(cd, IOCTL_STORAGE_LOAD_MEDIA, nil, 0, nil, 0, ret, nil) ;
CloseHandle(cd);
end;
end;
end;
drivers := (drivers shr 1);
temp := (1 and drivers);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -