在我的窗体上,我在我的应用程序上创建了一个按钮。当我单击该按钮时,它将检查 CD 驱动器中是否有任何 CD/DVD。如果 CD 驱动器中有 CD/DVD,媒体播放器将在我已添加到应用程序的 Windows 媒体播放器上启动视频媒体。
到目前为止,我只能创建打开对话框以从 CD 中选择并播放它们。谁能告诉我应该使用什么来检测驱动器中的 CD 介质?
EDIT://抱歉,我对 C# 不是很好,所以你们可以解释一下您提供的教程吗?
private void Runbtn_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.currentPlaylist = axWindowsMediaPlayer1.mediaCollection.getByName("mediafile");
}
private void Stopbtn_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.stop();
}
}
以下代码应该可以工作:(它在 C++ 中,使用 DllImport 调用 Win32 API - 解释 here)
char szDrives[MAX_PATH];
long TotalNumberOfFreeBytes = 0;
long FreeBytesAvailable = 0;
// Get all the drives on your system. Divide by 4 as strlen("C:\") == 4
int noOfDrives =(GetLogicalDriveStrings(MAX_PATH,szDrives)/4);
for(int i=0;i<noOfDrives ;i++)
{
// find CD ROM drives
if (DRIVE_CDROM == GetDriveType(&drivestr[i*4]))
{
if(!GetDiskFreeSpaceEx(&drivestr[i*4],
&FreeBytesAvailable,
NULL,
&TotalNumberOfFreeBytes ))
{
// Disk in drive, enumerate files
// using FindFirstFile/FindNextFile
// and play video if any
}
}
}
GetDiskFreeSpaceEx 函数为所有 CD 请求的 TotalNumberOfFreeBytes 和 FreeBytesAvailable 返回零 (0),除非磁盘是 CD-RW 驱动器中未写入的 CD。
我是一名优秀的程序员,十分优秀!