Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Открыть привод, корректно убить процесс, закрыть привод и снова убить процесс - как?

Ответить
Настройки темы
VBS/WSH/JS - [решено] Открыть привод, корректно убить процесс, закрыть привод и снова убить процесс - как?

Аватара для Nun-Nun

Ветеран


Сообщения: 2153
Благодарности: 294


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Nun-Nun
Дата: 27-10-2011
Есть такая задача: нужно открыть привод с помощью имеющегося 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-а в каждом конкретном случае могут отличаться - это понятно и здесь проблем нет.

Отправлено: 21:22, 27-10-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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
Но сие работает не со всеми типами подключений устройств.

Отправлено: 03:57, 28-10-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Nun-Nun

Ветеран


Сообщения: 2153
Благодарности: 294

Профиль | Отправить PM | Цитировать


Цитата Iska:
Я бы предложил пользовать стороннюю утилиту, либо стороннюю библиотеку: vbscript: скрипты для открытия-закрытия лотка CD-ROM.»
Скачал, но пока ещё не пробовал. Хотя, судя по содержанию скриптов, есть там одно неудобство: букву привода нужно прописывать вручную, а она на разных компах далеко не всегда одинакова. Вот если бы эти скрипты определяли нужный привод хотя бы по метке вставленного диска...

У других сторонних утилит, например, от NirSoft, - присутствует такое же неудобство с буквой диска.

Цитата Iska:
Можете ещё попробовать поиграться с IMAPI...»
ОК, попробую.

-------
Свобода не означает вседозволенность.


Отправлено: 22:21, 29-10-2011 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Nun-Nun, как раз определить привод по метке диска не проблема.

Отправлено: 23:55, 29-10-2011 | #4


Аватара для Nun-Nun

Ветеран


Сообщения: 2153
Благодарности: 294

Профиль | Отправить PM | Цитировать


Цитата Iska:
как раз определить привод по метке диска не проблема. »
Только те VBS-скрипты этого не делают, а я в них не разбираюсь, чтобы поправить в нужную сторону.

-------
Свобода не означает вседозволенность.


Отправлено: 01:05, 30-10-2011 | #5


Аватара для Nun-Nun

Ветеран


Сообщения: 2153
Благодарности: 294

Профиль | Отправить PM | Цитировать


Iska,

Огромнейшее спасибо за скрипт для IMAPI ! Попробовал - прекрасно работает!
Думаю, тему можно считать решённой!

-------
Свобода не означает вседозволенность.


Отправлено: 12:59, 30-10-2011 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата 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»).

Отправлено: 13:53, 30-10-2011 | #7


Аватара для Nun-Nun

Ветеран


Сообщения: 2153
Благодарности: 294

Профиль | Отправить PM | Цитировать


Цитата 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)
Это преодолеть возможно?

-------
Свобода не означает вседозволенность.


Отправлено: 13:49, 31-10-2011 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Nun-Nun:
Это преодолеть возможно? »
Года два назад сие, вроде как, ничем не лечилось. Как нынче — не знаю.

Буду рад услышать обратное.

Отправлено: 15:25, 31-10-2011 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Открыть привод, корректно убить процесс, закрыть привод и снова убить процесс - как?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как реализовать в .bat файле возможность убить какой то процесс PlayOFF Скриптовые языки администрирования Windows 27 02-02-2024 02:15
help! не могу сообразить как убить процесс zl3p Программирование в *nix 2 05-02-2007 22:10
Зависший процесс на W2K3. Как убить без перезагрузки? brzl Microsoft Windows NT/2000/2003 6 08-01-2007 15:49
? как из к.строки убить прцесс или закрыть программу djoniAg Microsoft Windows 95/98/Me (архив) 1 09-10-2004 19:18
Как убить процесс ? ukms Программирование и базы данных 19 07-07-2004 09:01




 
Переход