Я пытаюсь получить четыре статуса («Присутствует диск», «Нет диска», «Открыто», «Чтение»), и перепробовал много вещей, и все они имеют свои недостатки.
Следующее обнаруживает открытие / закрытие, но остановится, если диск читается при запуске программы. В противном случае это нормально. Однако, это не дает мне все статусы, которые я хотел бы, и это замораживание раздражает.
import win32con
import win32file
import time
a = 'E:'
hdevice = win32file.CreateFile('\\\\.\\{0}'.format(a), win32con.GENERIC_READ, 0, None, win32con.OPEN_EXISTING, 0, None)
while True:
try:
win32file.DeviceIoControl(hdevice, 2967564, b"", 0, None)
except Exception:
print('Open')
else:
print('Closed')
time.sleep(0.25
Я также пробовал:
import wmi
c = wmi.WMI()
for each in c.Win32_CDROMDrive():
print(each)
, но "MediaLoaded" имеет значение False независимо от того, открыт ли лоток или закрыт, если в нем нет CD / DVD. Поэтому, чтобы это работало, в лотке должен быть постоянно установлен диск.