كيفية إخراج القرص المضغوط باستخدام WMI و Python؟

StackOverflow https://stackoverflow.com/questions/3174349

  •  02-10-2019
  •  | 
  •  

سؤال

باستخدام مكتبة Wwinds 'WMI ، كيف يمكنني إخراج ROM CD ROM في محرك أقراص CD/DVD محددة؟

أطلب مصادر من مستندات أو أمثلة من WMI لأنني أستخدم مكتبة WMI.Py على Python.

سيكون من الرائع أن يفي الحل Windows Computer أحدث من Windows 2000 ولديه أقراص مضغوطة متعددة. (أي لدي D: F: محركات الأقراص وكلاهما محركات أقراص مضغوطة. قد أرغب في إخراج القرص المضغوط في F: على وجه التحديد.)

تم تفتيشه على الشبكة ولكن لم يجد أي شيء ذي صلة. يجب أن يكون الحل الأخير هو ثنائيات الطرف الثالث وتنفيذها من القشرة.

هل كانت مفيدة؟

المحلول

يمكنك استخدام ctypes.

import ctypes

ctypes.windll.WINMM.mciSendStringW(u"set cdaudio door open", None, 0, None)

تحديث:

إذا كان لديك المزيد من محرك الأقراص ، فيمكنك استخدامه افتح أمر لتهيئة جهاز معين قبل الاتصال بالوظيفة أعلاه. على سبيل المثال (لم يتم اختباره).

ctypes.windll.WINMM.mciSendStringW(u"open D: type cdaudio alias d_drive", None, 0, None)
ctypes.windll.WINMM.mciSendStringW(u"set d_drive door open", None, 0, None)

أيضا ، انظر توثيق حول كيفية التحقق من قيم الإرجاع

نصائح أخرى

لا يوفر WMI نفسه وسيلة لإخراج محركات أقراص CD/DVD. على الرغم من ذلك ، هناك حلول أخرى تتضمن استخدام وظائف Windows API ، على سبيل المثال:

  • باستخدام mciSendString وظيفة. لا يمكن أن يساعدك في رمز Python ، ولكن هذا مثال C# لمساعدتك في الحصول على الفكرة:

    mciSendString("open f: type cdaudio alias cdrom", null, 0, IntPtr.Zero);
    mciSendString("set cdrom door open", null, 0, IntPtr.Zero);
    
  • باستخدام DeviceIOControl وظيفة. مثال (أيضًا في C#) هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top