1

Тема: VBScript: скрипты для открытия-закрытия лотка CD-ROM

Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
oAutoIt.CDTray "D:", "open"
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
oAutoIt.CDTray "D:", "close"

Букву диска ("D") замените на свою. Потребуется библиотека AutoItX3.dll: http://www.script-coding.com/AutiItX.html.
Зачем это может понадобиться? Например, у меня конструкция корпуса системного блока такова, что когда лоток CD-ROM открыт, кнопка его закрытия недоступна. Можно закрыть лоток, только толкая его. Поскольку я боюсь рано или поздно сломать лоток таким обращением, я написал скрипты

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

2

Re: VBScript: скрипты для открытия-закрытия лотка CD-ROM

То же самое на AutoHotkey:

Drive, Eject, D: ; открыть лоток CD-ROM
Sleep, 1000
Drive, Eject, D:, 1 ; закрыть лоток CD-ROM
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

3

Re: VBScript: скрипты для открытия-закрытия лотка CD-ROM

Приведу пару примеров без использования сторонних инструментов, используя лишь штатные компоненты:

openCD()
WSCRIPT.SLEEP 2000
closeCD()

'--------------------
'ОТКРЫТЬ ЛОТОК
sub openCD()
    Set WMP = CreateObject ("WMPlayer.OCX")
        WMP.cdromCollection.Item(0).Eject()
end sub
'--------------------
'ЗАКРЫТЬ ЛОТОК
sub closeCD()
    Set WMP = CreateObject ("WMPlayer.OCX")
        WMP.cdromCollection.Item(0).Eject()
        WMP.cdromCollection.Item(0).Eject()
end sub

4

Re: VBScript: скрипты для открытия-закрытия лотка CD-ROM

И MCI-контрол:

' Сие тварение открывает лоток CD-rom'а при заранее вставленном диске или закрывает лоток при необнулённом буфере оного.
set MCI = CreateObject ("MCI.MMControl")
    MCI.DeviceType="CDAudio"
    'MCI.wait=True
    MCI.command="open"  ' открыть устройство
    MCI.command="eject" ' открыть/закрыть лоток
    wscript.sleep 3000
    MCI.command="eject" ' открыть/закрыть лоток
wsh.quit

5

Re: VBScript: скрипты для открытия-закрытия лотка CD-ROM

Переключатель состояния лотка CDROM. Если лоток закрыт, сценарий открывает его и наоборот.

Результат команды открытия/закрытия лотка можно оценивать по времени выполнения. Сценарий пытается открыть лоток и измеряет время выполнения этой операции - если время выполнения меньше заданного минимального порога, значит операция выполнена неудачно, лоток уже открыт и сценарий закрывает лоток.

Lang: VBScript
WinXP/7
Потребуется библиотека AutoItX3.dll


 ' Переключатель состояния лотка CDROM 
 ' Lang: VBScript
 ' Потребуется библиотека AutoItX3.dll
 ' WinXP/7

 Option Explicit

 ' Минимальный порог времени открытия/закрытия лотка, сек 
 ' (подбирается вручную)
 Const OP_THRESHOLD = 0.5

 Const DRIVE_LETTER = "D:"
 Dim t1, t2, d
 Dim oAu3

 Set oAu3 = WScript.CreateObject("AutoItX3.Control")

 ' Команда открыть лоток привода
 t1 = Timer
 oAu3.CDTray DRIVE_LETTER, "open"
 t2 = Timer
 d = Round(t2-t1, 1)

 MsgBox "Время выполнения операции ОТКРЫТИЕ ЛОТКА" & Chr(32) & d & Chr(32) & "сек.", _
	vbInformation,"OPEN"

 oAu3.Sleep(1000)

 ' Если время открытия лотка меньше минимального порога, 
 ' значит лоток уже открыт и сценарий закрывает лоток

 If d < OP_THRESHOLD Then 
	oAu3.CDTray "D:", "close"
 End If	
 WScript.Quit()