|
|
Открыть привод, корректно убить процесс, закрыть привод и снова убить процесс - как?
Есть такая задача: нужно открыть привод с помощью имеющегося vbs-скрипта (скрипт уже есть), корректно убить процесс wscript.exe (т.к. сам он не выгрузится, а при попытке запустить его второй раз почему-то нормально не работает), закрыть привод с помощью того же имеющегося vbs-скрипта и снова корректно убить процесс wscript.exe. Пробовал экспериментировать, но так ничего и не добился. В чём ошибка?
Код:
START "" %windir%\System32\wscript.exe Open_Close_Tray.vbs
Taskkill /im Wscript.exe /f
ECHO.
SET /p yesno="Для записи диска нажмите Y, для отказа - N или любую другую клавишу. Записать?"
if /i "%yesno%"=="Y" (GOTO :WRITEDISK) ELSE (GOTO :ENDWRITE)
GOTO :ENDWRITE
:WRITEDISK
START "" %windir%\System32\wscript.exe Open_Close_Tray.vbs
Taskkill /im Wscript.exe /f
ECHO.
ECHO Запущен процесс записи диска. Это займёт несколько минут...
ImgBurn.exe /START /ERASE YES /MODE BUILD YES /SRC /ROOTFOLDER YES "C:\Temp\My_Disk\" /VOLUMELABEL "MY_DISK" /DEST 1:0:0 /FILESYSTEM "ISO9660 + Joliet + UDF" /UDFREVISION "1.02" /SPEED 10x /COPIES 1 /EJECT YES /CLOSE
ECHO.
ECHO Запись диска завершена!
:ENDWRITE
А вот на всякий случай содержание VBS-скрипта:
Код:
Set objWMP = CreateObject("WMPlayer.OCX.7")
Set colCDs = objWMP.cdromCollection
colCDs.Item(0).Eject
MsgBox "Извлеките из привода исходный диск и вставьте чистый диск.",64,"Открыть\Закрыть DVD-привод"
colCDs.Item(0).Eject
P.S. Разумеется, параметры /DEST 1:0:0 , /SPEED 10x и т.п. в командной строке для ImgBurn-а в каждом конкретном случае могут отличаться - это понятно и здесь проблем нет.
|
Nun-Nun, проблема с методом «.Eject» объекта «WMPlayer.OCX.7» старая и без выворотов не решаемая.
Я бы предложил пользовать стороннюю утилиту, либо стороннюю библиотеку: vbscript: скрипты для открытия-закрытия лотка CD-ROM.
Можете ещё попробовать поиграться с IMAPI:
Код:
Option Explicit
Dim objMsftDiscMaster
Dim objDiscRecorder
Dim uniqueId
Set objMsftDiscMaster = WScript.CreateObject("IMAPI2.MsftDiscMaster2")
Set objDiscRecorder = WScript.CreateObject("IMAPI2.MsftDiscRecorder2")
uniqueId = objMsftDiscMaster.Item(0)
objDiscRecorder.InitializeDiscRecorder uniqueId
objDiscRecorder.EjectMedia
MsgBox "***"
objDiscRecorder.CloseTray
Set objDiscRecorder = Nothing
Set objMsftDiscMaster = Nothing
WScript.Quit 0
Но сие работает не со всеми типами подключений устройств.
|
Цитата:
Цитата Iska
Я бы предложил пользовать стороннюю утилиту, либо стороннюю библиотеку: vbscript : скрипты для открытия-закрытия лотка CD-ROM. »
|
Скачал, но пока ещё не пробовал. Хотя, судя по содержанию скриптов, есть там одно неудобство: букву привода нужно прописывать вручную, а она на разных компах далеко не всегда одинакова. Вот если бы эти скрипты определяли нужный привод хотя бы по метке вставленного диска... :sorry:
У других сторонних утилит, например, от NirSoft, - присутствует такое же неудобство с буквой диска. :(
Цитата:
Цитата Iska
Можете ещё попробовать поиграться с IMAPI... »
|
ОК, попробую.
|
Nun-Nun, как раз определить привод по метке диска не проблема.
|
Цитата:
Цитата Iska
как раз определить привод по метке диска не проблема. »
|
Только те VBS-скрипты этого не делают, а я в них не разбираюсь, чтобы поправить в нужную сторону. :(
|
Iska,
Огромнейшее спасибо за скрипт для IMAPI ! Попробовал - прекрасно работает!
Думаю, тему можно считать решённой!
|
Цитата:
Цитата Nun-Nun
Думаю, тему можно считать решённой! »
|
Nun-Nun, только отчасти. У меня, по крайней мере, IMAPI не работает с приводами на внешних контроллерах, а также на контроллерах, не входящих непосредственно в южный мост чипсета. Т.е., опять же — у меня, IMAPI отказался работать с приводами, подключёнными к наличествующим на материнской плате контроллерам «Silicon Image SiI 3132 SATALink Controller» и «ITE IT8211 ATA/ATAPI Controller». Только с «родным» для чипсета ICH7R («Intel(R) ICH7R/DH SATA RAID Controller»).
|
Цитата:
Цитата Iska
У меня, по крайней мере, IMAPI не работает с приводами на внешних контроллерах, а также на контроллерах, не входящих непосредственно в южный мост чипсета. Т.е., опять же — у меня, IMAPI отказался работать с приводами, подключёнными к наличествующим на материнской плате контроллерам «Silicon Image SiI 3132 SATALink Controller» и «ITE IT8211 ATA/ATAPI Controller». Только с «родным» для чипсета ICH7R («Intel(R) ICH7R/DH SATA RAID Controller»). »
|
Ой, блин, а ведь и правда! На одном компе прошло нормально, а на другом на базе матери ASUS M4A87TD EVO (чипсет AMD870\SB850+JMicronJMB361) выдало вот такое, хотя в сценарий вписал только текст сообщения и ничего больше не трогал :(:
Цитата:
Сценарий: Open_Close_Tray.vbs
Строка: 12
Символ: 1
Ошибка: Неопознанная ошибка
Код: 80004005
Источник: (Full)
|
Это преодолеть возможно?
|
Цитата:
Цитата Nun-Nun
Это преодолеть возможно? »
|
Года два назад сие, вроде как, ничем не лечилось. Как нынче — не знаю.
Буду рад услышать обратное.
|
Время: 03:47.
© OSzone.net 2001-