Статусы дисковода в Windows с использованием Python3? - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь получить четыре статуса («Присутствует диск», «Нет диска», «Открыто», «Чтение»), и перепробовал много вещей, и все они имеют свои недостатки.

Следующее обнаруживает открытие / закрытие, но остановится, если диск читается при запуске программы. В противном случае это нормально. Однако, это не дает мне все статусы, которые я хотел бы, и это замораживание раздражает.

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. Поэтому, чтобы это работало, в лотке должен быть постоянно установлен диск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...